Usuário criado Validator validação do lado do cliente não vai chamada Javascript no 'complexo' controle do usuário
-
06-09-2019 - |
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: