>一般的なシナリオでは、Html.Partial を使用する場合。
Html.Partial("partialViewName");
parentView に送信されるモデルは、partialViewName で使用できます。また、parentView に送信される ViewData は、partialViewName にも使用できます。
>特殊なケースとして、Html.Partial を使用し、Model. を送信する場合。
Html.Partial("partialViewName", newModel);
parentView に送信されたモデルに到達できません。したがって、これ以降、partialViewName でアクティブなモデルは newModel です。parentView に送信される viewData は、partialViewName にも使用できます。
>特殊なケースとして、Html.Partial を使用し、ViewDataDictionary を送信する場合。
parentView に送信されるモデルは、partialViewName にも使用できます
私。
@Html.Partial("partialViewName", new ViewDataDictionary { { "key", value }, { "key2", value2 } })
ここで、parentView に送信された ViewData は、「new ViewDataDictionary」によって上書きされます。
ここで、parentView 用の ViewBag がある場合、上記のようなコードを書くとそこまでたどり着けません。
Ⅱ.
ViewDataDictionary viewDataDictionary = new ViewDataDictionary();
viewDataDictionary.Add("key", value);
viewDataDictionary.Add("key2", value2);
@Html.Partial("partialViewName", viewDataDictionary)
この使用法は最初のもの (I.) と同じです。
III.
ViewDataDictionary viewDataDictionary = ViewData; //If you use this code block, ViewBag which is sent for parent View is not lost.
viewDataDictionary.Add("key", value);
viewDataDictionary.Add("key2", value2);
@Html.Partial("partialViewName", viewDataDictionary)
このコード ブロックを使用すると、partialViewName で parentView に送信される ViewData と ViewBag に到達できます。