我的ValidationSummary显示在模态对话框中。这很好。
但是,我的代码隐藏执行一些数据库查找,并将带有CustomValidator的消息添加到我的ValidationSummary。
在我开始在对话框中显示ValidationSummary之前,这工作正常。但是现在当CustomValidator无效时,它不会显示在ValidationSummary对话框中。
当其他字段无效时,对话框会出现,但不会出现来自代码隐藏的CustomValidator消息。
以下是在页面无效时显示对话框的代码:
<script type="text/javascript">
function WebForm_OnSubmit() {
if (typeof (ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) {
$("#modal_validationSummary").modal('show');
return false;
}
return true;
}
</script>
验证摘要代码:
<div class="modal modal-danger" id="modal_validationSummary" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title">Invalid Login</h4>
</div>
<div class="modal-body clearfix">
<asp:ValidationSummary ID="LoginValidationSummary" runat="server"
ValidationGroup="LoginGroup" HeaderText="<div class='validationheader'>Please address the issues below</div>"
CssClass="validationsummary" DisplayMode="BulletList"/>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default btn-clean" data-dismiss="modal">Close</button>
</div>
</div>
</div>
</div>
我的代码隐藏添加了CustomValidator:
CustomValidator cv = new CustomValidator();
cv.IsValid = false;
cv.ErrorMessage = "Login not found. Please try again.";
cv.ValidationGroup = "LoginGroup";
this.Page.Validators.Add(cv);
感谢您的帮助!
答案 0 :(得分:0)
所以事件的顺序是:你回发,添加验证器,页面渲染,验证摘要不显示错误?
在什么时候显示验证摘要?如果它在您的初始回发之前,那么您的验证消息将无法显示,因为验证阻止您回发,并且直到回发之后才会进行验证。
CustomValidator
可能还有一个问题没有添加到Controls
集合中,但我不确定。
ETA:一点点研究强化了我的信念,即弹出式ValidationSummary
窗口仅适用于客户端验证。你的是服务器端。您可以将CustomValidator
函数作为客户端验证程序,同时仍在服务器上执行工作,但您需要:
CustomValidator
。 (您仍然可以动态添加它,但它会在您的初始渲染中添加,并且您必须将其添加到Controls
集合中。)无论如何,这是它的浓缩版本。