我现在已经对这个问题进行了一点点反对,没有任何进展,所以如果有人可以解决这个问题,我会非常喜欢它......我有一个ASP.Net Forms网站,我加载了一个jQuery对话框让用户输入一个ID,执行必填字段和表达式验证器客户端(工作正常),然后我试图验证针对SQL表服务器端。问题是我无法启动服务器端的CustomValidator,我已将其从实际验证脚本更改为'set args.IsValid = false',将'Page.Validate()'添加到提交的顶部按钮功能,为自定义验证Sub添加了一个断点,并且从所有外观中都不执行验证操作,并且提交功能继续,就像条目有效一样。
// Show the Login Dialog
<script>
function showLogin() {
$("#login-dialog").dialog({
height: 380
, width: 500
, modal: true
, buttons: {
'Login': {
text: "Login"
//Login Dialog Login Submit button function
, click: function () {
$("#<%=LoginSubmit.ClientID()%>")[0].click();
return false;
}
}
, 'Register': {
text: "Register"
//Login Dialog Register Button
, click: function () {
$("#<%=RegisterButton.ClientID()%>")[0].click();
return false;
}
}
}
});
};
<%--Login dialog Div--%>
<div id="login-dialog" title="Please Login or Register" hidden="hidden">
<p>If you have already setup an Operator ID you can enter it below, otherwise please register for one.</p>
<asp:RequiredFieldValidator runat="server" ControlToValidate="LoginOperatorID" ErrorMessage="Operator ID is required." CssClass="field-validation-error" />
<asp:RegularExpressionValidator runat="server" ControlToValidate="LoginOperatorID" ErrorMessage="Operator ID must be 4-9 digits" CssClass="field-validation-error" ValidationExpression="[0-9]{4,9}" />
<table id="LoginTable">
<tr>
<td>Operator ID:</td>
<td><input type="password" runat="server" id="LoginOperatorID" maxlength="9" /></td>
<asp:CustomValidator ID="LoginSubmitValidator" runat="server" EnableClientScript="true" Enabled="true"
ErrorMessage="Operator ID does not exist."
ControlToValidate="LoginOperatorID"
OnServerValidate="CheckLoginID" CssClass="field-validation-error" />
</tr>
</table><br />
<input type="button" runat="server" id="LoginSubmit" onserverclick="SubmitLogin" hidden="hidden" causesvalidation="true" />
<input type="button" runat="server" id="RegisterButton" hidden="hidden" onserverclick="RegisterDialog" causesvalidation="false" />
'Validate Operator Login Sub
Protected Sub CheckLoginID(source As Object, args As ServerValidateEventArgs)
args.IsValid = False
End Sub
'Submit Operator Login Sub
Sub SubmitLogin()
Page.Validate()
.....
End Sub
提前感谢您的帮助,非常感谢!
的更新 的 它似乎与DIV在jQuery对话框中有关,根据@ ShaiCohen的评论,我从登录按钮和用于对话框的div中删除了隐藏属性,导致对话框div也显示在页面中,当我使用对话框外的ASP提交按钮,验证工作正常,当我在对话框中使用ASP按钮或使用对话框按钮时,验证不起作用。
答案 0 :(得分:0)
我放弃了使用jQuery模式,并决定使用CSS构建一个Modal,并且在那里工作的验证没有任何问题。