对MVC 3来说还不太新,我不确定最好的方法。假设我有一个像这样的简单类......
Public Class PDetail
<Required>
Public Property FirstName As String
<Required>
Public Property LastName As String
<Required>
Public Property CellNo As String
<Required>
Public Property PassportNo As String
<Required>
Public Property Nationality As String
Public Property ExtraRequirements As String
End Class
这用于创建我的模型。在预订过程中,我可能会在视图上提示这些值。但是根据预订的类型,我可能不希望问一些这些问题。例如,如果预订不涉及到外国,我可能不需要PassportNo和国籍。
处理这个问题的最佳方法是什么?简单的方法似乎是有一个单独的属性,确定哪些字段显示为EditorFor,其他字段使用HiddenFor。但这是明智的吗?此外,在服务器端验证时,隐藏字段仍然有效。
上面的课程是我实际做的简化版本。根据预订的类型,我有多达10个可以独立显示或隐藏的字段,因此为每个组合创建一个单独的模型将是一场噩梦。
答案 0 :(得分:1)
您需要使用here描述的原则(使用案例的Bind属性)保护自己免受质量分配攻击。
答案 1 :(得分:0)
您可以查看与FluentValidation.NET完美集成的ASP.NET MVC,并使此类验证方案非常简单。与数据注释使用的声明性方法相比,它使用命令式方法,正如您所描述的那样,它可能是梦魇。
答案 2 :(得分:0)
您可以通过实施IValidatableObject界面,根据您的预订检查验证。
阅读this帖子了解详情。