我用比较器和验证摘要发现了一些奇怪的行为。
例如,下面的.aspx文件(没有相关的c codebehind,所以刚刚在新的.aspx文件中跳过下面的代码,运行并观察行为)。
这些(精致的)步骤:
-
按F5启动应用程序;
-
点击按钮;
-
在左侧文本框中单击鼠标左键;
-
FO型;
-
在右文本框中单击鼠标左键;
-
型棒;
-
单击按钮(现在摘要不正确);
-
再次单击该按钮(现在概要是正确的,但是您不会得到一个回发,因为还没有满足所有验证要求)。
这些步骤的结果稍有不同,因为焦点是通过键盘改变的:
-
按F5启动应用程序;
-
点击按钮;
-
在左侧文本框中单击鼠标左键将其调焦;
-
FO型;
-
按Tab键移到右文本框的焦点;
-
型棒;
-
按Tab键移动到按钮的焦点(现在摘要不正确);
-
单击按钮(现在摘要是正确的,但由于还没有满足所有验证要求,因此您不会得到回发)。
为什么需要对“提交”按钮执行两个操作(一个操作使其聚焦,一个操作单击它)以更新验证摘要?
(旧的比较步骤:
1。在两个文本框中都不输入任何内容,然后按Submit按钮
2。现在,您可以在验证摘要中得到一个项目符号列表,在提交按钮前面有两个验证行。
三。现在在文本框1中输入“foo”,在文本框2中输入“bar”,然后按Submit按钮
4。现在您将这两个项目保留在项目符号列表中,并且“两个文本框值应该相同。”在SubmitButton前面
5。现在再按一下提交按钮
6。现在validationSummary正确包含“两个文本框值不相等”。
广告4:为什么validationSummary只包含一个项目符号“两个文本框值应该相同。”?
)
<asp:ValidationSummary ID="ValidationSummary" runat="Server" ShowSummary="true" DisplayMode="BulletList" />
<asp:Label ID="lbl" AssociatedControlID="TextBox1" runat="Server" Text="Write into TextBox" />
<asp:TextBox ID="TextBox1" runat="Server" />
<asp:TextBox ID="TextBox2" runat="Server" />
<asp:RequiredFieldValidator ID="req1" runat="Server" ControlToValidate="TextBox1"
ErrorMessage="1st TextBox is Mandatory field" Text="<br>Please write something in 1st Box." />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="Server" ControlToValidate="TextBox2"
ErrorMessage="2nd TextBox is Mandatory field" Text="<br>Please write something in 2nd Box." />
<asp:CompareValidator ID="CompareValidator1" runat="Server" ControlToValidate="TextBox2"
ControlToCompare="TextBox1" Operator="Equal" Type="string" Text="Both textbox values should be same."
ErrorMessage="Both textbox values are not equal." Display="Dynamic" />
<asp:Button ID="SubmitButton" runat="Server" Text="Submit" />
注意:添加validationgroup没有帮助:
<asp:ValidationSummary ID="ValidationSummary" runat="Server" ValidationGroup="All" ShowSummary="true" DisplayMode="BulletList" />
<asp:Label ID="lbl" AssociatedControlID="TextBox1" runat="Server" Text="Write into TextBox" />
<asp:TextBox ID="TextBox1" runat="Server" />
<asp:TextBox ID="TextBox2" runat="Server" />
<asp:RequiredFieldValidator ID="req1" runat="Server" ValidationGroup="All" ControlToValidate="TextBox1"
ErrorMessage="1st TextBox is Mandatory field" Text="<br>Please write something in 1st Box." />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="Server" ValidationGroup="All" ControlToValidate="TextBox2"
ErrorMessage="2nd TextBox is Mandatory field" Text="<br>Please write something in 2nd Box." />
<asp:CompareValidator ID="CompareValidator1" runat="Server" ValidationGroup="All" ControlToValidate="TextBox2"
ControlToCompare="TextBox1" Operator="Equal" Type="string" Text="Both textbox values should be same."
ErrorMessage="Both textbox values are not equal." Display="Dynamic" />
<asp:Button ID="SubmitButton" runat="Server" Text="Submit" ValidationGroup="All" />
有人吗?