2010-05-16 26 views
1

是否可以純粹聲明性地在ASP.NET GridView中啓用驗證?ASP.NET GridView - 如何以聲明方式啓用驗證

我已經試過:

  • 綁定到SelectMethod和UpdateMethod一個ObjectDataSource一個GridView定義

  • GridView控件包含一些只讀綁定列列和模板列,其EditTemplate包含一個文本框和一個RegularExpressionValidator只允許在TextBox中輸入數字。

  • GridView還包含一個CommandField,其中ShowEditButton = true且CausesValidation = true。

如果我點擊編輯,輸入一個無效的值,然後點擊保存,有一個回傳,以及異常的服務器(輸入字符串的不正確的格式)拋出。

我當然可以通過向服務器上的RowUpdating事件處理程序添加驗證代碼來避免這種情況(請參見下文),但是是否存在任何聲明方式來強制驗證在不添加此代碼的情況下完成?

protected void MyGridView_RowUpdating(object sender, GridViewUpdateEventArgs e) 
{ 
    Page.Validate("MyValidationGroup"); 
    if (!Page.IsValid) 
    { 
     e.Cancel = true; 
    } 
} 

回答

0

您需要該代碼。

「除了依賴客戶端驗證,在處理回發事件時調用Page.IsValid也很重要。」

http://weblogs.asp.net/rajbk/archive/2007/03/15/page-isvalid-and-validate.aspx

更新

爲了避免鍋爐板代碼,你可以有所有頁面從基類繼承和所有的用戶控件從一個不同的基類繼承。基類將具有共同的邏輯(如上所述)。然後,您必須手動將其連接起來,或者在控制樹中漫步並自動連接事件。

我會親自堅持你目前擁有的。

+0

我知道服務器端驗證是必要的,我的問題是它是否可以聲明啓用。我試圖減少需要添加的相同樣板代碼的數量。 但是我懷疑你是對的:GridView和類似的類沒有「ValidationGroup」屬性,沒有它,他們不知道需要驗證什麼。 – Joe 2010-05-17 05:42:55