Custom ActionResult equivalent Model for all PartialViews Custom ActionResult equivalent Model for all PartialViews asp.net asp.net

Custom ActionResult equivalent Model for all PartialViews


You can initialize the MultiplePartialViewsResult object in the following manner with new own ViewData / ViewData.Model instances (works fine for me):

return new MultiplePartialViewsResult(    //PartialView("~/Views/RowSumView.cshtml", new List<double>() { 1.0 }),    //PartialView("~/Views/ColumnSumView.cshtml", new List<double>() { 2.0 })    new PartialViewResult() { ViewName = "~/Views/RowSumView.cshtml", ViewData = new ViewDataDictionary() { Model = new List<double>() { 1.0 } } },    new PartialViewResult() { ViewName = "~/Views/ColumnSumView.cshtml", ViewData = new ViewDataDictionary() { Model = new List<double>() { 2.0 } } });

Custom Action Result:

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);        }    }}

Controller:

public ActionResult Index() {    return View();}public ActionResult FakeAction() {    return new MultiplePartialViewsResult(        //PartialView("~/Views/RowSumView.cshtml", new List<double>() { 1.0 }),        //PartialView("~/Views/ColumnSumView.cshtml", new List<double>() { 2.0 })        new PartialViewResult() { ViewName = "~/Views/RowSumView.cshtml", ViewData = new ViewDataDictionary() { Model = new List<double>() { 1.0 } } },        new PartialViewResult() { ViewName = "~/Views/ColumnSumView.cshtml", ViewData = new ViewDataDictionary() { Model = new List<double>() { 2.0 } } }    );}

Views:

Index:

@Html.Action("FakeAction")

ColumnSumView.cshtml / RowSumView.cshtml:

@model List<double><ul>    @foreach(double item in Model) {        <li>@item</li>    }</ul>