2010-10-11 29 views
0

在ListView中,每當單擊CommandName =「Delete」的按鈕時,我都會設置一個CustomValidator來驗證字段。自定義驗證不與刪除按鈕一起使用?

<ItemTemplate> 
    <asp:TextBox ID="NameTextBox" Text=<%# Eval("Name") %> runat="server" /> 
    <asp:Button ID="DeleteButton" Text="Delete" CommandName="Delete" ValidationGroup="Delete" runat="server" /> 
    <asp:CustomValidator ValidationGroup="Delete" SetFocusOnError="true" Display="Dynamic" OnServerValidate="CustomValidator_ServerValidate" runat="server">You can't delete this.</asp:CustomValidator> 
</ItemTemplate> 

但是,從不顯示錯誤消息並繼續處理。奇怪的是,自定義驗證方法被調用,找到該字段,並將e.IsValid正確設置爲false。無論是否檢查Page.IsValid都無關緊要,因爲無論如何都不會顯示錯誤消息。

它工作,如果我從按鈕中刪除CommandName =「刪除」。

隨着谷歌,我發現了以下解決方案,這似乎表明有人已經有過類似的問題:

http://devio.wordpress.com/2007/12/11/formview-delete-button-and-customvalidators/

但我想,以確保該解決方案是要走的路。我的意思是,自定義驗證真的不應該與數據綁定控件中的刪除按鈕一起工作,嚴重嗎?

回答

0

我已經聽說過這樣的問題,他通過完全不同的方式解決了這個問題。就像,而不是customValidator,他把一個標籤集EnableViewState =「False」Visible =「False」他檢查刪除事件的條件,並把響應放回標籤。也許它不適合你?

但是,如果你真的問「爲什麼?????」,我知道他沒有找到確切的原因...

+0

這是很久以前的事,但我覺得我最後做它像你描述過。 – md1337 2012-04-10 15:53:52

+0

地獄是啊:P至少它讓你關閉一個問題:) – 2012-04-10 20:15:42