我们有一个用于“创建”的ViewModel和一个用于“编辑”的ViewModel。编辑继承自create,以便我们共享公共字段。然后我们使用@ Html.EditorForModel(“User”),它使用“create”作为模型。
这是为了编辑用户,所以我需要在创建时需要密码字段,但在删除时不需要。因此,创建VM具有[Required]装饰密码,而编辑VM具有没有装饰的密码属性,并且还使用new声明(公共新字符串密码{get; set;})。
这几乎与这个问题完全相似: MVC4 Conditional Required Annotation
对于我的情况,由于EditorTemplate使用create对象作为模型而不是编辑,它仍然需要我相信的字段。我尝试将它从editorformodel更改为:
@Html.EditorFor(model=>model, "User")
希望因为编辑实际上是一个“创造”,因为它会起作用,但是当我发布时,我仍然不敢提供必要的字段。
有没有办法完成我正在尝试的内容,或者我可以选择删除所需内容并处理服务器端,还是将编辑器模板拆分为两个模板?
答案 0 :(得分:1)
您可以创建自定义属性来检查是否需要密码。当提交服务器发生时,您的自定义属性可以检查您是否正在处理更新或插入,然后在需要时使模型无效。
以下是有关创建custom attributes和custom attributes with unobstrusive jquery validation
的一些资源快乐编码!!