基于所选条件验证MVC3视图模型对象

时间:2013-06-27 03:20:10

标签: c# asp.net-mvc-3 validation

我想为我创建的视图模型做一些条件验证。

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的单选按钮,通过客户端显示或隐藏绑定到Item&的部分视图。 DetailedItem。

在表单帖子上我想验证所选模型但是如何验证。如果我使用上面的代码并执行

ModelState.IsValid

只有一个局部视图完全完成后,由于另一个模态不包含必需的字段,我会得到一个IsValid = false。

有没有办法只验证所选模型?

任何帮助都会很棒!

1 个答案:

答案 0 :(得分:2)

是的,ModelState是一个Dictionary类,您可以使用Key从中删除一个项目。

例如,

ModelState.Remove("Item1");

然后打电话给

ModelState.IsValid

将忽略该条目的要求。

以下是documentation的链接,还有一些discussion关于此是否应在ViewModel中发生。