Asp.net-Mvc

如何為其模型呼叫帶有“null”的局部視圖?

  • February 20, 2012

假設我有一個名為的局部視圖UserDetails,其@model子句設置為名為User.

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

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正常通過?

代替

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

寫得越詳細

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

這使得這個特定的場景起作用。

但是,它有一個缺點:它會清除從控制器傳遞的所有資訊。特別是,它清除了所有的驗證資訊;如果您要發布一些數據並且想要在該局部視圖中顯示驗證錯誤消息,則不能使用此技術。

引用自:https://stackoverflow.com/questions/9292852