2013-05-20 59 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

我可以理解爲什麼那麼,因爲如果這是設置,那麼是的,它應該工作......接下來要嘗試的是禁用客戶端腳本,並查看它是否在服務器上正確驗證 - 回發,看看它是否是客戶端驗證問題... –