Utente creato Validator solito chiamata validazione lato client JavaScript sul controllo utente 'complesso'

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

Domanda

Ho creato un controllo utente (da System.Web.UI.UserControl), e ha creato il mio validatore per il controllo utente (da System.Web.UI.WebControls.BaseValidator). Tutto funziona bene fino a quando cerco di ottenere il controllo utente a fare la convalida lato client.

Durante il tentativo di eseguire il debug di questo problema ho impostato 'di controllo per convalidare' ad una casella di testo al posto del controllo utente personalizzato, e lo script lato client funziona bene! Sembra a me che ha un un problema con il mio controllo utente composito ho creato. Qualcuno ha riscontrato questo problema prima? validazione lato client chiunque altro visto ha fallire su controlli utente personalizzati?

Qualche info in più:

Il controllo composito è una goccia 'immagine loader' elenco e giù, in quanto è un ajax abilitato a discesa (usando ICallbackEventHandler). So che il lato client JavaScript che viene scritto sulla pagina, e hanno posto un avviso ( 'messaggio casuale') come la prima linea nella funzione di convalida che appare solo se si sta convalidando una casella di testo (cioè non quando si sta convalidando il mio controllo personalizzato)

Lingua: C # (ASP.NET 2.0) e jQuery 1.2.6

nel file di 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" />

nel codice validatore dietro

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);
    }

So che il mio ControlPropertiesValid () e EvaluateIsValid () funzionano bene.

Apprezzo tutto l'aiuto su questo tema.

Noel.

Nessuna soluzione corretta

Altri suggerimenti

Provare a usare un CustomValidator invece di un BaseValidator:

http://msdn.microsoft.com/ it-it / library / 9eee01cx (VS.71) aspx

E impostare il ClientValidationFunction per assicurare il vostro JS si chiama:

http: // msdn .microsoft.com / en-us / library / system.web.ui.webcontrols.customvalidator.clientvalidationfunction.aspx

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top