【问题标题】:Exclude nested properties from binding - [Bind(Exclude="SomeProperty")]从绑定中排除嵌套属性 - [Bind(Exclude="SomeProperty")]
【发布时间】:2011-08-20 13:14:26
【问题描述】:

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

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

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

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

编辑:我也尝试过[Bind(Exclude = "City.State")],但不起作用。我仍然得到Model.IsValid false。

【问题讨论】:

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


    【解决方案1】:

    验证是绑定之外的一个单独步骤,并且始终适用于模型的所有属性,因此绑定排除不会阻止验证 City.State

    你可以打电话

    ModelState["City.State"].Errors.Clear();
    

    在检查Model.IsValid之前。

    附:我更愿意添加另一个具有正确属性集的视图模型类,然后使用我上面提到的解决方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      相关资源
      最近更新 更多