2013-06-27 62 views
1

我想爲我創建的視圖模型做一些條件驗證。根據選定的條件驗證MVC3視圖模型對象

public class MyViewModel 
{ 
    public int SelectedItem { get; set; } 

    public Item Item1 { get; set; } 
    public DetailedItem Item2 { get; set; } 

} 

public class Item 
{ 
    [Required] 
    public int Id { get; set; } 

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

public class DetailedItem 
{ 
    [Required] 
    public int Id { get; set; } 

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

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

我有綁定到的SelectedItem經由客戶機側示出了單選按鈕或隱藏綁定到物品& DetailedItem的局部視圖。

在表單發帖我想驗證選定的模型,但如何。如果我用上面的代碼,做一個

ModelState.IsValid 

由於只有全面完成我會得到的IsValid =假的局部視圖中的一個,由於其他模式不包含所需的字段。

有沒有辦法只驗證所選模型?

任何幫助將會很棒!

回答

2

是的,ModelState是一個Dictionary類,你可以使用Key從它中刪除一個項目。

例如,

ModelState.Remove("Item1"); 

然後

ModelState.IsValid 

通話將忽略該條目的要求。

這裏是對documentation一個鏈接,也有一些discussion是否該曾經發生在你的ViewModels與否。

+0

謝謝丹。當你知道如何時很容易 –