184

ProductImage を受け取る厳密に型指定された部分ビューがあり、それがレンダリングされるときに、それを含むページで動的に作成する追加の ViewData も提供したいと考えています。厳密に型指定されたオブジェクトとカスタム ViewData の両方を RenderPartial 呼び出しで部分ビューに渡すにはどうすればよいですか?

var index = 0;
foreach (var image in Model.Images.OrderBy(p => p.Order))
{
  Html.RenderPartial("ProductImageForm", image); // < Pass 'index' to partial
  index++;
}
4

9 に答える 9

262

RenderPartial は、単に ViewDataDictionary である別のパラメーターを取ります。次のように呼び出すだけです。

Html.RenderPartial(
      "ProductImageForm", 
       image, 
       new ViewDataDictionary { { "index", index } }
); 

これにより、他のすべてのビューがデフォルトで持っているデフォルトの ViewData が上書きされることに注意してください。ViewData に何かを追加する場合、部分ビューに渡すのはこの新しいディクショナリにはありません。

于 2009-07-23T02:22:59.670 に答える
173

womp が投稿したものを拡張するには、次のようなコンストラクターのオーバーロードを使用する場合、既存のビュー データを保持しながら新しいビュー データを渡すことができます。ViewDataDictionary

Html.RenderPartial(
      "ProductImageForm", 
       image, 
       new ViewDataDictionary(this.ViewData) { { "index", index } }
); 
于 2012-05-11T22:00:28.617 に答える
49
@Html.Partial("_Header", new ViewDataDictionary { { "HeaderName", "User Management" }, { "TitleName", "List Of Users" } })
or
@{Html.RenderPartial("_Header", new ViewDataDictionary { { "HeaderName", "User Management" }, { "TitleName", "List Of Users" } });}

部分ページ(_Header):

<div class="row titleBlock">
    <h1>@ViewData["HeaderName"].ToString()</h1>
    <h5>@ViewData["TitleName"].ToString()</h5>
</div>
于 2014-08-12T08:27:59.190 に答える
11

これはうまくいくはずだと思いますか?

ViewData["currentIndex"] = index;
于 2009-07-23T01:56:29.490 に答える
6

厳密に型指定されたクラスを含む別のクラスを作成します。

新しいものをクラスに追加し、それをビューに返します。

次に、ビューで、新しいクラスを継承し、エラーになるコードのビットを変更してください。つまり、フィールドへの参照です。

お役に立てれば。そうでない場合はお知らせください。特定のコードを投稿します。

于 2009-07-23T01:57:27.057 に答える
5

これが古い投稿であることは知っていますが、コア 3.0 を使用して同様の問題に直面したときに遭遇しました。

@{
Layout = null;
ViewData["SampleString"] = "some string need in the partial";
}

<partial name="_Partial" for="PartialViewModel" view-data="ViewData" />
于 2019-12-18T21:08:14.550 に答える
4

追加のデータを渡す最も簡単な方法は、@Joel Martinez が指摘しているように、ビューの既存の ViewData にデータを追加することです。ただし、ViewData を汚染したくない場合、RenderPartial には、3 つの引数と、表示されている 2 つの引数のバージョンを受け取るメソッドがあります。3 番目の引数は ViewDataDictionary です。渡したい余分なデータだけを含むパーシャル専用の別の ViewDataDictionary を作成できます。

于 2009-07-23T02:21:38.567 に答える