次のカスタムActionResult
を作成し、複数の部分ビューを返します。すべてのPartialViewsのカスタムActionResult相当モデル
public class MultiplePartialViewsResult : ActionResult
{
private const string Separator = "-";
private PartialViewResult[] _partialViews;
public MultiplePartialViewsResult(params PartialViewResult[] partialViews)
{
_partialViews = partialViews;
}
public override void ExecuteResult(ControllerContext context)
{
foreach (var partialView in _partialViews)
{
partialView.ExecuteResult(context);
context.HttpContext.Response.Output.Write(Separator);
}
}
}
そして、次のように私はそれを使用する:
return new MultiplePartialViewsResult(
PartialView("~/Views/RowSumView.cshtml", new List<double>() { 1.0 }),
PartialView("~/Views/ColumnSumView.cshtml", new List<double>() { 2.0 }));
をしかし、私はMultiplePartialViewsResult
のコンストラクタにブレークポイントを置く場合、私は両方のケースでモデルが2.0
に等しいことがわかります。これは、配列で指定された最後のモデルを持つすべてのモデルをオーバーライドします。
メソッド内にいくつかのPartialViewを作成し、変数に割り当てるようにしてください。そして、あなたはそれらがすべて同等のモデルを共有していることに気づくでしょう
はい、正しいです。2つの 'model'を1つのビューに戻そうとする場合は、両方のモデルを含む' view model'を作成し、ビューのモデルを新しい 'ViewModel'にします。 –
それは、私が多くの意見に戻そうとしているところです。イデアは、この記事に基づいています。 https://www.simple-talk.com/dotnet/asp.net/revisiting-partial-view-rendering-in-asp.net-mvc/ – Maximus
最後に確認したことがありますか? 'partial view'の両方で共有される' view model'を使うと言います。 –