2012-10-05 67 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。