經過一年左右的MVC經驗,我仍然對一件事感到困惑:如何有效地將ModelAnnotations與ModelState.IsValid一起使用?對於簡單的教程示例,這一切都很好,我對此毫無疑問。但是,我認爲有以下型號:MVC模型綁定/驗證
Public Class Movie
Public Property MovieID As Integer
Public Property Title As String
Public Property Year As Integer
Public Property AddedByUser As String
End Class
現在場AddedByUser需要在數據庫中,但是我不希望用戶提供這個,而是基於在當前登錄用戶的業務邏輯。我如何使用這種情況下的DataAnnotation屬性?如果我要求這個字段,然後在控制器,當我說:
Public Function SaveMovie(ByVal entity as Movie) As ActionResult
If ModelState.IsValid
// Save to DB here...
End If
Return View(entity)
End Function
...驗證將失敗,因爲我沒有視圖綁定中的該字段。我應該有一個隱藏的領域嗎?我應該爲SaveMovie操作編寫自定義視圖模型嗎?我想我可以在業務邏輯中編寫自己的驗證,但爲什麼要使用模型驗證呢?自定義模型粘結劑也許?處理這些類型場景的最佳方式是什麼?
只是爲了給出另一個示例場景,插入和更新操作與驗證之間的區別如何?對於更新操作,對象的主鍵是必需的。但是插入不是這種情況。你是否應該爲這個關鍵屬性插入和更新單獨的模型?