Utworzono następujący niestandardowy ActionResult
, który zwraca wiele widoków częściowych.Niestandardowy odpowiednik odpowiednika dla wszystkich częściowych widoków
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);
}
}
}
A potem używać go w sposób następujący:
return new MultiplePartialViewsResult(
PartialView("~/Views/RowSumView.cshtml", new List<double>() { 1.0 }),
PartialView("~/Views/ColumnSumView.cshtml", new List<double>() { 2.0 }));
Ale jeśli I miejsce przerwania w konstruktorze MultiplePartialViewsResult
„s widzę ten model w obu przypadkach wynosi 2.0
. Zastępuje wszystkie modele ostatnim modelem określonym w tablicy.
Spróbuj utworzyć parę PartialViews w metodzie i przypisz ją do zmiennej. Wtedy zauważysz, że wszyscy mają podobny model.
Tak, to jest poprawne. Jeśli próbujesz zwrócić dwa "modele" do jednego widoku, utwórz "model widoku", który zawiera oba modele, które chcesz wysłać, i uczyń model widoku nowym 'ViewModel' –
To jest punkt, do którego próbuję wrócić do wielu widoków. Idea opiera się na tym poście, w którym autor wskazuje, że modele mogą być różne. https://www.simple-talk.com/dotnet/asp.net/revisiting-partial-view-rendering-in-asp.net-mvc/ – Maximus
Czy sprawdzasz ostatnie rzeczy? Mówi się, aby użyć 'widoku modelu 'współdzielonego przez oba widoki częściowe. –