L'utilisateur créé Validator appel wont validation côté client Javascript sur le contrôle de l'utilisateur « complexe »

StackOverflow https://stackoverflow.com/questions/586229

Question

J'ai créé un contrôle utilisateur (à partir System.Web.UI.UserControl), et créé ma propre validateur pour le contrôle de l'utilisateur (de System.Web.UI.WebControls.BaseValidator). Tout fonctionne bien jusqu'à ce que j'essaie d'obtenir le contrôle de l'utilisateur de faire la validation du côté client.

Tout en essayant de déboguer ce problème que j'ai mis « contrôle pour valider » à une zone de texte au lieu du contrôle utilisateur personnalisé, et le script côté client fonctionne très bien! Il me semble qu'il a un un problème avec mon contrôle composite utilisateur que j'ai créé. Quelqu'un at-il rencontré ce problème avant? Est-ce que quelqu'un d'autre vu validation côté client échouer sur les contrôles utilisateur personnalisés?

Quelques infos supplémentaires:

Le contrôle composite est une liste déroulante « image loader », comme il est activé ajax liste déroulante (en utilisant ICallbackEventHandler). Je sais que le côté client javascript est écrit à la page, et ont placé une alerte ( « message aléatoire ») comme la première ligne dans la fonction validateur qui apparaît seulement si elle est la validation d'une zone de texte (c.-à-pas quand il est de valider mon contrôle personnalisé)

Langue: C # (ASP.NET 2.0) et jQuery 1.2.6

dans le fichier ASPX:

<rms:UserDDL ID="ddlUserTypes" runat="server" PreLoad="true" />
<rms:DDLValidator 
        ID="userTypesVal"
        ControlToValidate="ddlUserTypes"
        ErrorMessage="You have not selected a UserType"
        runat="server"
        Text="You have not selected a UserType"
        Display="Dynamic"
        EnableClientScript="true" />

dans le code validateur derrière

protected string ScriptBlock
        {
            get
            {
                string nl = System.Environment.NewLine;
                return
                    "<script type=\"text/javascript\">" + nl +
                    "   function " + ScriptBlockFunctionName + "(ctrl)" + nl +
                    "   {" + nl +
                    "       alert('Random message'); " + nl +
                    "       var selVal = $('#' + ctrl.controltovalidate).val(); " + nl +

                    "       alert(selVal);" + nl +
                    "      if (selVal === '-1') return false;  " + nl +
                    "      return false;  " + nl +
                    "   }" + nl +
                    "</script>";
            }
        }

    protected override void OnPreRender(EventArgs e)
    {
        if (this.DetermineRenderUplevel() && this.EnableClientScript)
        {
            Page.ClientScript.RegisterExpandoAttribute(this.ClientID, "evaluationfunction", this.ScriptBlockFunctionName);
            Page.ClientScript.RegisterClientScriptBlock(GetType(), this.ScriptBlockKey, this.ScriptBlock);
        }

        base.OnPreRender(e);
    }

Je sais que mon ControlPropertiesValid () et EvaluateIsValid () fonctionnent bien.

Je vous remercie de toute aide à ce sujet.

Noel.

Pas de solution correcte

Autres conseils

Essayez d'utiliser un CustomValidator au lieu d'un BaseValidator:

http://msdn.microsoft.com/ fr-fr / bibliothèque / 9eee01cx (VS.71) .aspx

et définissez les ClientValidationFunction pour assurer votre JS est appelé:

http: // msdn .microsoft.com / fr-fr / bibliothèque / system.web.ui.webcontrols.customvalidator.clientvalidationfunction.aspx

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top