我有一个简单的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
是假的。
答案 0 :(得分:2)
验证是与绑定分开的一步,并且始终适用于模型的所有属性,因此绑定排除不会阻止对City.State的验证。
你可以打电话
ModelState["City.State"].Errors.Clear();
检查Model.IsValid
之前。
P.S。我会使用正确的属性集添加另一个viewmodel类,然后使用上面提到的解决方法。