从绑定中排除嵌套属性 - [Bind(Exclude =“SomeProperty”)]

时间:2011-08-20 13:14:27

标签: asp.net-mvc asp.net-mvc-3

我有一个简单的ViewModel,如下所示

[Bind(Exclude = "State")]
public class CityViewModel {
    public int Id {get;set;}
    public int StateId { get; set; }
    public City City { get; set; }
}

City属性具有对“State”实体的导航引用。在我看来,我正在尝试使用上面的CityViewModel添加一个新城市。添加城市时,我希望MVC忽略“City.State”属性,以便它不会被绑定和验证。所以我在CityViewModel上使用[Bind(Exclude = "State")]。令人惊讶的是,在控制器中,我得到了“City.State”字段的模型错误(我试图从绑定和验证中排除)。

如何告诉MVC忽略绑定和验证的“City.State”属性?

编辑:我也尝试了[Bind(Exclude = "City.State")],但无效。我仍然认为Model.IsValid是假的。

1 个答案:

答案 0 :(得分:2)

验证是与绑定分开的一步,并且始终适用于模型的所有属性,因此绑定排除不会阻止对City.State的验证。

你可以打电话

ModelState["City.State"].Errors.Clear();
检查Model.IsValid之前

P.S。我会使用正确的属性集添加另一个viewmodel类,然后使用上面提到的解决方法。

相关问题