我有一个视图模型,其中需要一个名为 Type 的字段:
[Required]
public string Type{ get; set; }
我在不同的页面上使用这个视图模型,但在某些情况下,类型不是必需的。我想知道如何告诉页面不需要类型。
我尝试的是放一个
@Html.HiddenFor(model => model.Type)
但这没有用。
我有一个视图模型,其中需要一个名为 Type 的字段:
[Required]
public string Type{ get; set; }
我在不同的页面上使用这个视图模型,但在某些情况下,类型不是必需的。我想知道如何告诉页面不需要类型。
我尝试的是放一个
@Html.HiddenFor(model => model.Type)
但这没有用。
你不能这样做RequiredAttribute
编写/获取自定义条件属性,例如(此处RequiredIfAttribute
的示例 )
或者使用FluentValidation代替 DataAnnotations。
或者使用不同的 ViewModel。
如果您出于某种原因想使用相同的视图模型,请查看使用万无一失的库,万无一失旨在扩展 ASP.NET MVC 中提供的数据注释验证。最初的努力集中在添加条件验证上。
开箱即用的必需属性是:
[RequiredIf]
[RequiredIfNot]
[RequiredIfTrue]
[RequiredIfFalse]
[RequiredIfEmpty]
[RequiredIfNotEmpty]
[RequiredIfRegExMatch]
[RequiredIfNotRegExMatch]
Foolproof 的美妙之处在于它支持使用开箱即用的非干扰技术进行客户端验证。
所以在你的情况下
[RequiredIfTrue("ShouldValidateType"]
public string Type{ get; set; }
public bool ShouldValidateType {get; set;}
只有当 ShouldValidateType 为 true 时,属性类型才会验证。