经过一年左右的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操作编写自定义视图模型吗?我想我可以在业务逻辑中编写自己的验证,但为什么要使用模型验证呢?自定义模型粘结剂也许?处理这些类型场景的最佳方式是什么?
只是为了给出另一个示例场景,插入和更新操作与验证之间的区别如何?对于更新操作,对象的主键是必需的。但是插入不是这种情况。你是否应该为这个关键属性插入和更新单独的模型?