asp.net-mvc – 在ASP.NET MVC 3中用逻辑构建子视图的好方法是什
我们正在使用Microsoft ASP.NET MVC 3构建业务应用程序.
一些观点现在变得如此复杂,以至于将它们划分为两个或更多个单独的视图似乎是合理的,具有单独的控制器和模型. (重用是想要构建单独视图的另一个原因.) 您建议使用哪种方法在ASP.NET MVC中实现此类分离? 到目前为止,我们发现的最佳解决方案是使用 这篇文章还提到了RenderAction方法:ASP .NET MVC correct UserControl architecture 你觉得这种方法有什么缺点吗? 解决方法
进入“发布详细信息”视图.一个复合视图,显示“Post Summary”和“Post Comments”.
采取部分方法,你最终得到: public class PostDetailModel { PostSummaryModel Summary { get;set; } PostCommentsModel Comments { get;set; } } 并查看: <div id="post_detail"> @Html.Partial("Summary",Model.Summary) <ul class="comment-list"> @foreach(var comment in Model.Comments) { <li>@Html.Partial("Comment",comment)</li> } </ul> </div> 这意味着PostController.Detail方法将负责构造PostSummaryModel,构造PostCommentsModel并选择用于呈现每个部分的部分. 如果您还有以下型号: public class PostListModel { ICollection<PostSummaryModel> Posts { get;set; } } 您将有两个操作负责构建PostSummaryModel并知道要使用哪个部分.如果您的应用程序结构不正确,可能会导致重复的数据访问/模型映射代码.但是,如果将模型构建委托并抽象为可重用模型工厂(可以通过两种操作调用),则可以将此风险降至最低. 另一方面,采用Html.Action方法简化您的模型: public class PostDetailModel { int PostId { get;set; } } 并查看: <div id="post_detail"> @Html.Action("Summary",new { Model.PostId }) @Html.Action("Comments",new { Model.PostId }) </div> 然后可以将其留下“摘要”和“注释”操作来构建自己的模型并选择视图. 然而,在选择Html.Action方法时会有如此轻微的性能影响,因为ASP.NET MVC必须经历模型绑定,执行动作过滤器,验证等的整个过程,因此您可能不会使用Html.Action在足够长的列表视图中显示项目.但是为了创建一个复合视图,它可以是一个非常干净的方式来拼接六个左右的现有视图. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 使用MVC 4.0 Web Api的NewtonSoft json Con
- asp.net-identity – 多租户身份服务器openid身份验证
- asp.net-mvc – 未在ELMAH中记录的错误
- asp.net-mvc – 具有不同参数名称的Asp.Net路由
- asp.net-mvc-3 – ASP.NET MVC3 WebGrid – 自定义,服务器端
- (推荐)第15章 扩展ASP.NET MVC (IModelBinder、过滤器)
- 将搜狗细胞词库转换为其他输入法词库——深蓝词库转换1.1发
- asp.net-mvc – 在Ubuntu 16.04中运行ASPNET Core应用程序时
- asp.net-mvc – Razor方法Chaining / Fluent不适用于换行符
- 实体框架 – 使用EF和WebAPI,如何返回一个ViewModel并支持I
- 如何使用ASP.NET获取访问者位置(国家,州和城市)
- asp.net-web-api – 批量发布实体到WebAPI?
- .net – Autofac和IDisposable界面
- asp.net – Application_EndRequest没有找到Sess
- asp.net-mvc – MVC2中的REQUIRED String属性的服
- .net – 如何使用LINQ创建IQueryable类型的匿名对
- asp.net – 找不到’AppModule’的NgModule元数据
- asp.net-mvc – 是否有一个ASP MVC与JSTL标签等效
- asp.net-mvc-3 – 将部分视图返回到同一视图
- asp.net-mvc – 在创建项目后更改View Engine