用户创建的验证不会调用客户端验证的Javascript的“复杂”的用户控件
-
06-09-2019 - |
题
我已经创建(从System.Web.UI.UserControl)的用户控制,并创建了自己的验证器(从System.Web.UI.WebControls.BaseValidator)的用户控制。直到我试图让用户控制做客户端验证一切工作正常。
在试图调试这个问题我已经设置“控件来验证”到一个文本框,而不是自定义用户控件,并且客户端脚本正常工作!在我看来,它有一个问题,一个与我创建了我复合的用户控制。有没有人遇到过这个问题?有其他人看到客户端验证的自定义用户控件失败?
一些额外的信息:
在复合控制是一个下拉列表和“加载程序映像”,因为它是启用下拉列表(使用ICallbackEventHandler)一个AJAX。我知道,JavaScript是被写入的页面,并放置一个警告(“随机信息”),如,只有当它是验证一个文本框出现在验证函数的第一行客户端(即不是当它被验证我的自定义控制)
语言:C#(ASP.NET 2.0)和jQuery 1.2.6
在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" />
在校验码后面
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);
}
我知道我的ControlPropertiesValid()和EvaluateIsValid()工作正常。
我很欣赏在这个问题上的任何帮助。
诺尔。
没有正确的解决方案
其他提示
尝试使用的CustomValidator代替BaseValidator的:
http://msdn.microsoft.com/ EN-US /库/ 9eee01cx(VS.71)的.aspx
和设置ClientValidationFunction,以确保您的JS调用:
不隶属于 StackOverflow