2011-01-12 39 views
1

我的MVC 2應用程序中有一個表單,允許用戶從模型對象更新一組字段,這純粹是一種更新,因爲模型對象已經存在其輸入的必填字段。但是,當我嘗試更新一小部分字段並在我的模型對象上調用TryUpdateModel時,它會失敗,並且我的模型狀態會根據已填寫的必填字段發生錯誤。MVC2 TryUpdateModel包含的屬性不會忽略對未包含字段的驗證

這裏是我的控制器代碼:

[HttpPost] 
public ActionResult Work(int id, FormCollection forms) 
{ 
    var lead = claimRepo.GetLeadByID(id); 
    if (lead == null) 
     return View("NotFound"); 
    if (TryUpdateModel(lead, "Lead")) {...} 
} 

我甚至試過明確說明哪些字段更新,像這樣

TryUpdateModel(lead, "Lead", new string[] { "Date", "UserID", ...}) {...} 

它仍然失敗,是有一些原因,這不忽略未包括的字段的驗證或我做錯了什麼?

謝謝!

編輯

我發現這個問題,我有沒有數據庫支持,並在需要的元數據,因此增加一個getter和setter返回什麼屬性表示導致被標記上我的課的屬性TryUpdateModel通過,但我仍然好奇爲什麼顯式包含的屬性沒有忽略我沒有包括的領域。

另一個編輯

我有一個用戶模型,以及所有數據庫備份所需的字段,並試圖明確說明更新的是哪個領域仍然導致在形式失蹤領域的ModelState錯誤,而是從正在更新的數據庫填充模型對象。

回答

0

我不知道什麼時候默認行爲被更改爲僅用於驗證傳入數據,從我所知我認爲只有asp.net mvc1支持它,然後它在asp.net mvc2中改變,無論如何你可以說[Validate(false )]並允許部分數據通過並手動進行一些驗證。如果需要,您可以使用ViewModel並驗證視圖模型上的所有字段作爲第二個選項。有用的鏈接:partial validation