asp.net – 所有PartialView的自定义ActionResult等效模型
发布时间:2020-12-16 00:25:30 所属栏目:asp.Net 来源:网络整理
导读:我创建了以下自定义ActionResult,它返回多个部分视图。 public class MultiplePartialViewsResult : ActionResult{ private const string Separator = "-"; private PartialViewResult[] _partialViews; public MultiplePartialViewsResult(params PartialV
我创建了以下自定义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-mvc – Angularjs中每个视图应该有一个控制器吗?
- asp.net-core – 使用dotnet pack包含所有依赖项
- asp.net – 获取浏览器和连接信息的页面
- asp.net – Combres的路线(combres.axd)不起作用
- 【Asp.Net MVC+EF+三层架构】详解(四)MVC框架操作步骤
- 【Asp.Net MVC+EF+三层架构】详解(二)MVC学习
- ASP.NET中XML转JSON的方法实例
- asp.net-core – 无法在VS2015中定位netstandard或netstand
- asp.net-mvc-3 – 关于Razor中嵌套代码块声明的问题
- asp.net-mvc – 为多语言ASP.NET MVC Web应用程序设置Curre
推荐文章
站长推荐
热点阅读