2011-08-20 30 views
1

我有一個簡單的ViewModel下面從結合排除嵌套屬性 - [綁定(排除=「SomeProperty」)]

[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錯誤。

回答

2

驗證是由結合,將始終與模型的所有屬性,因此結合排除將不從的City.State

可以調用的ModelState驗證防止[「City.State」單獨的步驟] .Errors.Clear()檢查Model.IsValid之前。

P.S.我會主張用正確的一組屬性添加另一個viewmodel類,然後使用上面提到的解決方法。

+0

非常感謝。有效 – Jatin