Benutzer erstellt Validator Client-seitige Validierung Javascript wird nicht rufen ‚komplexe‘ Benutzersteuerung

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

Frage

Ich habe eine Benutzersteuerung (von System.Web.UI.UserControl) erstellt, und meine eigenen Validator für die Benutzersteuerung (von System.Web.UI.WebControls.BaseValidator). Alles funktioniert ok, bis ich versuche, den Benutzer der Kontrolle zu bekommen Clientseite Validierung zu tun.

Beim Versuch, dieses Problem zu debuggen, ich habe ‚Control zu validieren‘ Set-Box auf einen Text anstelle der benutzerdefinierten Benutzersteuerung und das Client-seitiges Script funktioniert gut! Es scheint mir, dass es ein ein Problem mit meiner Composite-Benutzersteuerung hat ich geschaffen habe. Hat jemand dieses Problem aufgetreten bevor? Hat jemand anderes Client-seitige Validierung gesehen nicht auf benutzerdefinierte Steuerelemente?

Einige zusätzliche Informationen:

Die Verbundsteuerung ist ein Dropdown-Liste und ‚Loader Bild‘, wie es ein Ajax ist die Dropdown-Liste aktiviert (mit ICallbackEventHandler). Ich weiß, dass die Client-Seite JavaScript in die Seite geschrieben wird, und haben eine alert ( ‚zufällige Nachricht‘) als die erste Zeile in der Prüffunktion platziert, erscheint nur, wenn es ein Textfeld ist die Validierung (dh nicht, wenn es die Validierung meine benutzerdefinierte Steuerung)

Sprache: C # (ASP.NET 2.0) und jQuery 1.2.6

in aspx-Datei:

<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" />

in Validator Code hinter

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

Ich kenne meine ControlPropertiesValid () und EvaluateIsValid () funktioniert ok.

Ich schätze jede Hilfe zu diesem Thema.

Noel.

Keine korrekte Lösung

Andere Tipps

Versuchen Sie, eine CustomValidator anstelle eines BaseValidator mit:

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

Und die ClientValidationFunction stellen Sie JS, um sicherzustellen, heißt:

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top