asp.net – 所有PartialView的自定义ActionResult等效模型
发布时间:2020-05-25 15:46:59 所属栏目:asp.Net 来源:互联网
导读:我创建了以下自定义ActionResult,它返回多个部分视图。 public class MultiplePartialViewsResult : ActionResult{ private const string Separator = -; private PartialViewResult[] _partialViews; public MultipleP
|
我创建了以下自定义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。它使用数组中指定的最后一个模型覆盖所有模型。 解决方法您可以使用新的自己的ViewData / ViewData.Model实例以下列方式初始化MultiplePartialViewsResult对象(对我来说可以正常工作):return new MultiplePartialViewsResult(
//PartialView("~/Views/RowSumView.cshtml",//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 } } }
);
自定义操作结果: 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);
}
}
}
控制器: public ActionResult Index() {
return View();
}
public ActionResult FakeAction() {
return new MultiplePartialViewsResult(
//PartialView("~/Views/RowSumView.cshtml",new List<double>() { 2.0 })
new PartialViewResult() { ViewName = "~/Views/RowSumView.cshtml",ViewData = new ViewDataDictionary() { Model = new List<double>() { 2.0 } } }
);
}
浏览次数: 指数: @Html.Action("FakeAction")
ColumnSumView.cshtml / RowSumView.cshtml: @model List<double>
<ul>
@foreach(double item in Model) {
<li>@item</li>
}
</ul> (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何在ASP.NET中使用列表集合作为Repeater数据源与C#
- asp.net – HttpContext.Current.User为空,即使Windows身份
- asp.net-mvc – 仅使用Entity Framework更新已修改字段的最
- IIS是否记录请求标头信息?如果是的话,在哪里?
- 我应该如何组织我的ASP.Net主题和常见的CSS文件
- 如何创建使用asp:ListItem列表作为子控件的ASP.NET用户/服
- asp.net-mvc – 有没有人知道让Ninject 2在ASP.NET MVC中工
- Asp.Net(C#)内联编码Eval if语句
- asp.net – 为什么aspnet_compiler.exe这么慢(可以做得更快
- asp.net-mvc – HTTP错误500.19 – 内部服务器错误 – syst
