【发布时间】:2016-04-14 20:39:24
【问题描述】:
我创建了以下自定义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 并将其分配给变量。然后你会注意到它们都共享相同的模型。
【问题讨论】:
-
是的,它是正确的。如果您尝试将两个
models 返回到一个视图,请创建一个包含您要发送的两个模型的view model,并制作您的视图模型新的ViewModel -
这就是我试图回到许多观点的观点。想法基于这篇文章,作者指出模型可以是不同的。 simple-talk.com/dotnet/asp.net/…
-
检查最后的东西了吗?它说要使用由
partial view共享的view model。 -
"在示例中,两个局部视图使用相同的视图模型。但这不是限制。"
-
是的。所以在你的例子中你必须使用单个
view model
标签: asp.net asp.net-mvc razor asp.net-mvc-partialview actionresult