2012-02-15 9 views
7

UserDetailsという部分ビューがUserというモデルクラスに設定されている@model句があるとします。モデルに「null」を含む部分ビューを呼び出すにはどうすればよいですか?

今、私はこのような何かに見える別のモデルクラスがあるとします。SpecialModelためのビュー内

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

を、私は上記の私の部分図を呼び出したい:

@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) 

答えて

18

は、この特定のシナリオ作業を行い

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

より詳細を記述します。

ただし、コントローラから渡されたすべての情報がクリアされるという欠点があります。特に、すべての検証情報をクリアします。一部のデータを転記していて、部分ビュー内に検証エラーメッセージを表示する場合、この手法を使用することはできません。

+0

以下の解決策(herest)(http://stackoverflow.com/a/12037580/649497)は欠点を克服します! – Mojtaba

関連する問題