2012-10-05 36 views
0

我有一个视图模型在那里我有需要的字段名为类型:MVC视图模型[必需] DropDownListFor

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

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

我想是什么把一个

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

,但没有奏效。

回答

1

如果您希望使用相同的视图模型出于使用foolproof库的原因,万无一失的目的是扩展ASP.NET MVC中提供的数据注释验证。最初的努力主要集中在增加临时验证。

所需的属性了他箱子是:

[RequiredIf] 
[RequiredIfNot] 
[RequiredIfTrue] 
[RequiredIfFalse] 
[RequiredIfEmpty] 
[RequiredIfNotEmpty] 
[RequiredIfRegExMatch] 
[RequiredIfNotRegExMatch] 

万全的美妙之处在于它使用unobstrusive技术开箱即用支持客户端验证。

所以你的情况

[RequiredIfTrue("ShouldValidateType"] 
public string Type{ get; set; } 

public bool ShouldValidateType {get; set;} 

如果ShouldValidateType是真实的属性类型只会验证。

1

你不能做到这一点与RequiredAttribute

要么写/获得自定义条件属性,像RequiredIfAttribute(一个例子here

或者使用FluentValidation代替DataAnnotations的。

或使用不同的ViewModels。