使用EditorForModel进行条件要求的数据注释

时间:2014-10-16 15:31:32

标签: asp.net-mvc mvc-editor-templates data-annotations

我们有一个用于“创建”的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")

希望因为编辑实际上是一个“创造”,因为它会起作用,但是当我发布时,我仍然不敢提供必要的字段。

有没有办法完成我正在尝试的内容,或者我可以选择删除所需内容并处理服务器端,还是将编辑器模板拆分为两个模板?

1 个答案:

答案 0 :(得分:1)

您可以创建自定义属性来检查是否需要密码。当提交服务器发生时,您的自定义属性可以检查您是否正在处理更新或插入,然后在需要时使模型无效。

以下是有关创建custom attributescustom attributes with unobstrusive jquery validation

的一些资源

快乐编码!!