2012-02-15 59 views
7

假設我有一個稱爲UserDetails的局部視圖,其@model子句設置爲名爲User的模型類。如何使用「null」爲其模型調用分部視圖?

現在假設我有一個看起來像這樣的另一個模型類:

public sealed class SpecialModel 
{ 
    public User SpecialUser; 
    public ... // other stuff 
} 

裏面的SpecialModel一個觀點,我想援引上述我的部分觀點:

@model MyProject.Models.SpecialModel 
@{ ViewBag.Title = "..."; } 
<div class='user'>@Html.Partial("UserDetails", Model.SpecialUser)</div> 

該作品如果用戶不是null就好了。但是,如果用戶是null,我得到這個異常:

System.InvalidOperationException:傳遞到字典的模型項的類型爲「MyProject.Models.SpecialModel」,但本詞典需要類型的「典範項目MyProject的.Models.User」。

很明顯,異常信息在說謊。我該如何解決這個問題,這樣我才能正常通過null

回答

18

而不是

@Html.Partial("UserDetails", Model.SpecialUser) 

寫的更詳細的

@Html.Partial("UserDetails", new ViewDataDictionary(Model.SpecialUser)) 

這使得這種特定情況下工作。

然而,它有一個缺點:它清除從控制器傳遞的所有信息。特別是,它清除了所有的驗證信息;如果您發佈了一些數據,並且您希望在該部分視圖中顯示驗證錯誤消息,則不能使用此技術。

+0

下面的解決方案[這裏](http://stackoverflow.com/a/12037580/649497)克服了缺點! – Mojtaba 2016-06-01 16:24:41

相關問題