【发布时间】:2010-09-20 17:33:59
【问题描述】:
我通过单击按钮以编程方式向页面添加自定义验证器,然后验证页面并检查页面的 IsValid 属性。但 IsValid 属性始终返回 true。请帮忙。这是代码。我需要动态添加自定义验证器以显示来自业务对象的验证消息。我将自定义验证器的 IsValid 属性设置为 false,因此我希望页面的 IsValid 属性在验证后也返回 false。无法理解我在这里做错了什么。
protected void Button1_Click(object sender, EventArgs e)
{
var validator = new CustomValidator();
validator.IsValid = false;
validator.ErrorMessage = "The input is invalid";
validator.ValidationGroup = "vgCustom";
Page.Validators.Add(validator);
ValidationSummary1.ValidationGroup = "vgCustom";
Page.Validate("vgCustom");
Label1.Text = Page.IsValid ? "The Page is valid" : "The Page is Invalid";
}
这里是 HTML 标记
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ValidationSummary ID="ValidationSummary1" runat="server"/>
<asp:Button ID="Button1" runat="server" Text="Validate" OnClick="Button1_Click" />
<asp:Label ID="Label1" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
【问题讨论】:
-
如果我将自定义验证器添加到标记并在“ServerValidate”事件处理程序中返回 false 并以编程方式设置错误消息,则它可以工作。但我不明白有什么区别。
标签: asp.net validation