Validador de usuario creado suele llamar la validación del lado del cliente Javascript en control de usuario 'complejo'

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

Pregunta

He creado un control de usuario (de System.Web.UI.UserControl), y ha creado mi propio validador para el control de usuario (de System.Web.UI.WebControls.BaseValidator). Todo funciona bien hasta que intenta conseguir el control de usuario para hacer la validación del lado del cliente.

Al tratar de depurar este tema he puesto 'de control para validar' a un cuadro de texto en lugar del control de usuario personalizado, y el script del lado del cliente funciona bien! Me parece que tiene un problema con mi un control de usuario compuesta he creado. Alguien ha encontrado con este problema antes? Ha fallar la validación nadie más visto del lado del cliente en los controles de usuario personalizados?

Algo de información adicional:

El control compuesto es una gota 'imagen loader' lista y hacia abajo, ya que es un ajax habilitado lista desplegable (usando ICallbackEventHandler). Yo sé que el JavaScript del lado cliente se está escribiendo en la página, y han colocado una alerta ( 'mensaje al azar') como la primera línea en la función de validación que sólo aparece si se está validando un cuadro de texto (es decir, no cuando se está validando mi control personalizado)

Idioma: C # (ASP.NET 2.0) y jQuery 1.2.6

en el archivo 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" />

en el código de validación detrás

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

Sé que mi ControlPropertiesValid () y EvaluateIsValid () funcionan bien.

Agradezco cualquier ayuda en este tema.

Noel.

No hay solución correcta

Otros consejos

Trate de usar un CustomValidator en lugar de un BaseValidator:

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

Y establecer el ClientValidationFunction para asegurar que su JS se llama:

http: // MSDN .microsoft.com / es-es / library / system.web.ui.webcontrols.customvalidator.clientvalidationfunction.aspx

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top