5

ビューを呼び出すコントローラーがあります。ビューには、次のように挿入された部分ビューがあります。

@{ Html.RenderPartial("PartialViewName", this.Model);} 

これはうまくいきます。

しかし、コントローラーでは、部分ビューで使用する ViewData または ViewBag に何かを入れたいと考えています。これどうやってするの?

4

4 に答える 4

6

これでうまくいくはずです。ビュー バッグとビュー データは、アクション メソッドの存続期間全体で使用できるため、ビューを取得するコントローラー メソッドでビュー データにアイテムを追加すると、そのビューでレンダリングされる後続のパーシャルはビュー データにアクセスできます。 . 部分ビューのビュー データから値を取得するための構文は非常に簡単です。例:

   @{
       var variable = ViewData["My Key"];
   }
于 2012-06-22T17:24:16.103 に答える
4

Html.Partial と Html.RenderPartial の両方に、ViewDataDictionary を受け入れるオーバーロードがあります。新しいものを構築するか、単に既存のものを渡すことができます。

@{ Html.RenderPartial("_MyPartial", Model.Property, new ViewDataDictionary { ... });}

また

@{ Html.RenderPartial("_MyPartial", Model.Property, ViewData);}

ViewBag は、パラメーターを渡す必要なくパーシャルにアクセスできると確信しています。

編集:

ViewBag と ViewData は、パーシャルとエディター/表示テンプレートの両方で確実に利用できます。従属ビューが次のようにアクセスする前に、ビューでそれらを編集できます。

@{ ViewBag.MyNewValue = "..."; }
@Html.Partial("_MyPartial", Model)

次に、パーシャルで:

@{ string myString = ViewBag.MyNewValue; }
于 2012-06-22T17:17:42.273 に答える
3

他の人が言ったように、アクション メソッドで ViewBag 値を割り当てている限り、部分ビューでアクセスできるはずです。

また、次のように部分ブロックをレンダリングできるはずです。

@Html.Partial("PartialViewName", Model)

これの代わりに

@{ Html.RenderPartial("PartialViewName", this.Model);}.
于 2012-06-22T17:49:31.107 に答える
2

最も簡単な方法でそれを行うことができます。

Viewbag.sth = value;コントローラーにセットするだけ。

そしてあなたの部分的な使用で@ViewBag.sth

于 2012-06-22T17:18:44.570 に答える