Usuário criado Validator validação do lado do cliente não vai chamada Javascript no 'complexo' controle do usuário

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

Pergunta

Eu criei um controle de usuário (de System.Web.UI.UserControl), e criei o meu próprio validador para o controle de usuário (de System.Web.UI.WebControls.BaseValidator). Tudo funciona bem até eu tentar obter o controle de usuário para fazer a validação do lado do cliente.

Ao tentar depurar este problema que criaram 'Controle para Validar' para uma caixa de texto em vez do controle de usuário personalizada, e o script do lado do cliente funciona bem! Parece-me que ele tem um um problema com o meu controle de usuário composta eu criei. Alguém já encontrou este problema antes? Alguém validação do lado do cliente mais viu falhar em controles de usuário personalizada?

Algumas informações adicionais:

O controle composto é uma lista suspensa e 'imagem loader' para baixo, pois é um ajax habilitado lista drop (usando ICallbackEventHandler) para baixo. Eu sei que o javascript do lado do cliente está sendo escrito para a página, e ter colocado um alert ( 'mensagem aleatória') como a primeira linha na função de validação que só aparece se for validar uma caixa de texto (ou seja, não quando ele está validando meu controle personalizado)

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

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

no código validador trá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);
    }

Eu sei que meu ControlPropertiesValid () e EvaluateIsValid () ok trabalho.

Agradeço qualquer ajuda sobre esta questão.

Noel.

Nenhuma solução correta

Outras dicas

Tente usar um CustomValidator em vez de um BaseValidator:

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

E definir o ClientValidationFunction para garantir o seu JS é chamado:

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top