C# ASP.NET验证组在服务器端不工作
我有一个包含两组控件的页面,每一组的ValidationGroup设置不同,但是如果我尝试正确填写一个表单,另一个表单的验证器将停止触发Click事件 我注意到它的行为通常是客户端的,但是该按钮会导致回发事件,并且服务器验证器似乎不尊重验证组。我不确定我做错了什么。当然,内置验证器都支持服务器端的验证组吗 下面是一个完整的独立示例:C# ASP.NET验证组在服务器端不工作,c#,asp.net,validation,C#,Asp.net,Validation,我有一个包含两组控件的页面,每一组的ValidationGroup设置不同,但是如果我尝试正确填写一个表单,另一个表单的验证器将停止触发Click事件 我注意到它的行为通常是客户端的,但是该按钮会导致回发事件,并且服务器验证器似乎不尊重验证组。我不确定我做错了什么。当然,内置验证器都支持服务器端的验证组吗 下面是一个完整的独立示例: <%@ Page Language="C#" %> <script runat="server"> protected void S
<%@ Page Language="C#" %>
<script runat="server">
protected void SubmitButton_Click(object sender, EventArgs e)
{
Page.Validate();
if (Page.IsValid) label.Text = "OK: " + ((Button)sender).ID.ToString();
}
</script>
<!DOCTYPE html>
<html>
<head runat="server">
<style>
body { font-family: sans-serif;}
.warning { color: red;}
</style>
</head>
<body>
<form id="f1" runat="server">
<h1>Validator Test</h1>
<asp:Label ID="label" runat="server" Font-Bold="true" ForeColor="Green" EnableViewState="false" /><br />
<div style="width:40%; float:left; height:200px; border:1px solid #eee; padding:15px; margin:5px;">
<h2>Left Form:</h2>
Email: <asp:TextBox ID="leftBox" runat="server" Columns="20" MaxLength="80" Width="160px" ValidationGroup="LEFT" />
<asp:RequiredFieldValidator ID="left2" runat="server" ControlToValidate="leftBox"
ErrorMessage="You must enter a value." ValidationGroup="LEFT">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="rev8" runat="server" ControlToValidate="leftBox" ValidationGroup="LEFT" Text="*"
ErrorMessage="Email address format is invalid." ValidationExpression="^[\.\-\w]+@([\w\-]+\.)+\w+$" />
<asp:Button ID="LeftSubmitButton" runat="server" Text="Save Left" OnClick="SubmitButton_Click" ValidationGroup="LEFT" />
<asp:ValidationSummary ID="LeftValidationSummary" runat="server" HeaderText="Error:" ValidationGroup="LEFT" CssClass="warning" />
</div>
<div style="width:40%; float:left; height:200px; border:1px solid #eee; padding:15px; margin:5px;">
<h2>Right Form:</h2>
Email: <asp:TextBox ID="rightBox" runat="server" Columns="20" MaxLength="80" Width="160px" ValidationGroup="RIGHT" />
<asp:RequiredFieldValidator ID="rfv9" runat="server" ControlToValidate="rightBox"
ErrorMessage="You must enter an value." ValidationGroup="RIGHT">*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="rev10" runat="server" ControlToValidate="rightBox" ValidationGroup="RIGHT" Text="*"
ErrorMessage="Email address format is invalid." ValidationExpression="^[\.\-\w]+@([\w\-]+\.)+\w+$" />
<asp:Button ID="RightSubmitButton" runat="server" Text="Save Right" OnClick="SubmitButton_Click" ValidationGroup="RIGHT" />
<asp:ValidationSummary ID="RightValidationSummary" runat="server" HeaderText="Error:" ValidationGroup="RIGHT" CssClass="warning" />
</div>
</form>
</body>
</html>
受保护的无效提交按钮单击(对象发送者,事件参数e)
{
Page.Validate();
if(Page.IsValid)label.Text=“确定:”+((按钮)sender.ID.ToString();
}
正文{字体系列:无衬线;}
.警告{颜色:红色;}
验证器测试
左表:
电邮:
*
权利形式:
电邮:
*
删除显式整页验证-即此行:
Page.Validate()代码>它忽略验证组
您会注意到,Page.Validate()
还具有覆盖,允许您指定确切的验证组,如Page.Validate(“右”)
。这是为了框架目的;web表单基础结构已经为您调用了适当的Validate()
,因此无需显式调用它 服务器端到底有什么不起作用,您是否正在查看页面。是否有效
,并希望它是真的
?谢谢!我的演示代码并没有完全模仿我的真实项目,我需要知道页面在page_Load()中是否有效,但是设置正确的页面。Validate(“”)为我解决了这个问题。真的很有帮助-谢谢!