asp.net-mvc – ASP.NET MVC主页数据
我使用ASP.NET MVC越多,我就越喜欢它.但是,在母版页上显示模型数据的情况下,似乎有几种方法可以实现.我不确定最好的解决方案.
我的例子是一个商业网站,我想在每个页面上输出产品类别列表,并显示访客购物车的状态. 在asp.net Web表单中,我通常会使用用户控件执行此操作,每个用户控件都执行自己的数据绑定以检索所需的数据. 在MVC中,所有数据都应由控制器传递. 因此,对于类别,最简单的解决方案似乎是在控制器操作中的View数据中传递它: ViewData["Categories"] = _service.GetCategories(); 但是,为每个操作执行此操作并不是很干,因此在this article之后我创建了一个基本控制器,将所需数据添加到我的ViewData: public class AppController : Controller { IAppService _service; public AppController() { } public AppController(IAppService appService) { _service = appService; SetSiteData(); } private void SetSiteData() { ViewData["Categories"] = _service.GetCategories(); } } 然后我为ViewMasterPage创建了一个扩展: public static void RenderCategoryList(this ViewMasterPage pg) { pg.Html.RenderPartial("CategoryList",pg.ViewData["Categories"]); } 在我的MasterPage中: <div> <%this.RenderCategoryList(); %> </div> 这似乎是一个非常干净的方法.但是,这是最好的方法,因为我也看到了为MasterPage创建ViewModel的建议.我可以看到,随着ViewModel数据的增长,这可能是一个更好的解决方案. 关于购物车状态,我想我会做类似的事情但不确定RenderAction是否更合适(When to use RenderAction vs RenderPartial with ASP.NET MVC). 解决方法
这是有效的,虽然这不是我做的方式有两个原因:
>我不喜欢将数据粘贴到ViewState中,因为您基本上将其作为对象进行投射 我认为这将完美地使用RenderAction(MvcFutures项目的一部分).此帮助程序可用于在另一个控制器上呈现Action.所以你可能有一个带有ListCategories动作的ProductController,你可以这样做: <% Html.RenderAction<ProductController>(x => x.ListCategories()); %> ListCategories会调用 _service.GetCategories(); 并可能将信息粘贴到自己的模型中.然后它会将该模型传递给View将是一个部分页面. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 模型绑定器究竟做了什么?如何有效地使用
- asp.net-core – 当返回null而不是控制器中设置的值时,Mode
- asp.net – 你的aspx页面中的内联代码是一个好习惯吗?
- asp.net管理多个web.config文件
- asp.net-mvc – 使用IIS 7重写模块重写Ampersand URL
- asp.net – 强制IIS快速到经典管道模式
- asp.net – “连接字符串指定本地Sql Server Express实例”
- Asp.Net Identity发现用户不在角色中
- 可以像使用ASP.NET Web服务一样使用WCF服务吗?
- asp.net-core – 在Microsoft.AspNet.Http.HttpContext中的
- asp.net – 如何在发布项目时交换连接字符串?
- asp.net-mvc-3 – ASP.NET MVC 3 RTM项目中的这个
- asp.net-mvc-3 – ASP.MVC 3 Razor在Html.Partia
- webforms – ASP.Net Core 1.0是否支持WebForm项
- ASP.net Ajax和JQuery – 部分回发
- asp.net-mvc – 如何在MVC 4 API中打印JSON脚本
- ASP.Net:如何从内容页面事件处理程序调用主页面
- asp.net-mvc-4 – ASP.NET MVC:脚本捆绑何时决定
- ASP.Net(也许是MVC)网站的博客引擎
- asp.net-mvc – ASP.NET MVC LINQ to SQL或Entit