0

我有一个视图模型,其中需要一个名为 Type 的字段:

    [Required]  
   public string Type{ get; set; } 

我在不同的页面上使用这个视图模型,但在某些情况下,类型不是必需的。我想知道如何告诉页面不需要类型。

我尝试的是放一个

     @Html.HiddenFor(model => model.Type)

但这没有用。

4

2 回答 2

1

你不能这样做RequiredAttribute

编写/获取自定义条件属性,例如(此处RequiredIfAttribute的示例 )

或者使用FluentValidation代替 DataAnnotations。

或者使用不同的 ViewModel。

于 2012-10-05T21:43:20.340 回答
1

如果您出于某种原因想使用相同的视图模型,请查看使用万无一失的库,万无一失旨在扩展 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 时,属性类型才会验证。

于 2012-10-05T21:49:48.097 回答