2010-10-13 62 views
1

所以,如果我想要一個新的對象添加到我的數據庫,我可以這樣寫:ASP.NET MVC(2)數據註解驗證和的UpdateModel <T>(C#)

public ActionResult Something(SomeObject Object) { 
    if (ModelState.IsValid()) { 
     DataContext.SomeObjects.InsertOnSubmit(Object); 
     DataContext.SubmitChanges(); 
    }; 
} 

但是,如何做驗證當我想更新一個對象時被調用? UpdateModel<T>是否會自動執行驗證,還是我必須做一些事情來告訴它或者我必須在致電UpdateModel<t>之前做些事情?

編輯:

對於@SLaks,所以做我做這樣的事情:

UpdateModel<SomeObject>(Object); 

if (ModelState.IsValid()) { 
    DataContext.SubmitChanges(); 
}; 

或者,如果我屠宰說,請告訴我正確的方式。

回答

1

你原來的問題似乎是「驗證如何被調用?」。

如果對象實現了IDataErrorInfo接口,則會在該對象上調用驗證。 IDataErrorInfo在Model Binder中實現 - 這發生在執行傳遞給Action之前。

所以,簡而言之:如果你使用DataAnnotations,你不必告訴它做些什麼。驗證會在您執行Action的代碼之前自動發生。這就是爲什麼ModelState.IsValid()返回值 - 因爲驗證已完成。

1

您應該再次檢查ModelState.IsValid()

+0

請看看我上面的編輯。 – Gup3rSuR4c 2010-10-13 03:19:56

+0

@Alex:您只想在模型有效時更新模型。 – SLaks 2010-10-13 03:31:53