2013-05-20 28 views
0

我的表单上有几个必填字段和正则表达式。点击按钮激发验证。单击该按钮时,错误消息显示asp:RequiredField的声明位置,而不在验证摘要中。这里是我的代码:验证摘要未拾取组中的错误消息

验证摘要:

<asp:ValidationSummary id="mySummary" DisplayMode="List" HeaderText="Error:" EnableClientScript="true" ShowSummary="true" runat="server" ValidationGroup="valGroup" /> 

必填项/正则表达式:

<!-- Required --> 
<asp:RequiredFieldValidator ID="reqField1" ControlToValidate="txtSomething" ErrorMessage="Something is required" runat="server" Display="Static" InitialValue="" ValidationGroup="valGroup" /> 
<!-- Regex --> 
<asp:RegularExpressionValidator runat="server" id="regexField1" ControlToValidate="txtSomething" 
    ErrorMessage="Something in the wrong format." ValidationExpression="^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$" ValidationGroup="valGroup"> 
</asp:RegularExpressionValidator> 

按钮:

<asp:LinkButton ID="btnValidate" runat="server" CausesValidation="True" ValidationGroup="valGroup" >Validate</asp:LinkButton> 

有什么建议?

+0

您的验证摘要是否在某些其他元素内不显示?你的代码看起来很好。 – MikeSmithDev

+0

不,如果是这种情况,那么我将无法看到错误消息,因为它们将进入验证摘要。在我的情况下,错误显示,只是不在摘要框中。 –

+0

我的意思是说,你的验证总结是在'div'中,用'display:none;'或其他。这完全不会影响你的其他错误信息。如果你的错误消息正在显示,那么你的摘要信息也应该显示......这让我想知道它是否显示在某个地方,而你却看不到它。 – MikeSmithDev

回答

0

很难从这个角度来看,因为它看起来像是正确设置给我的。唯一的调试方法是检查Page.Validators集合,在那里找到验证器,并确保IsValid对于这些人是错误的。所有ValidationSummary所做的是检查此集合,并且对于任何具有匹配的验证组,如果IsValid属性为false,则将其添加到已呈现的列表中。

+0

谢谢Brian,我研究了这个,验证组在按钮,验证器和摘要之间都是一样的。验证器的'isValid'属性对于无效的属性设置为false。这真的让我感到困惑...... –

+0

我可以理解为什么那么,因为如果这是设置,那么是的,它应该工作......接下来要尝试的是禁用客户端脚本,并查看它是否在服务器上正确验证 - 回发,看看它是否是客户端验证问题... –