[英]ASP.NET ValidationGroup not working server-side
我有一個包含兩組控件的頁面,每個組的ValidationGroup設置都不同,但是如果我嘗試正確填寫一個表單,則另一表單的驗證器將阻止Click事件的觸發。
我注意到它通常表現為客戶端,但是該按鈕隨后會導致回發事件,並且服務器驗證程序似乎不遵守驗證組。 我不確定我在做什么錯。 內置的驗證器肯定支持服務器端的驗證組嗎?
下面是一個完整的獨立示例:
<%@ 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>
刪除顯式的整頁驗證-此行: Page.Validate();
它無視驗證組。
您會注意到, Page.Validate()
也具有重寫功能,使您可以指定確切的驗證組-如Page.Validate("RIGHT")
。 這是出於框架目的; Web表單基礎結構已經為您調用了適當的Validate()
,因此無需顯式調用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.