2013-06-27 63 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

谢谢丹。当你知道如何时很容易 –