asp.net-mvc – mvc.net如何在迭代列表时使用强类型助手
我有一个局部视图,将对象列表呈现为表格格式,并允许编辑值…
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IList<whoozit.Models.PictureModel>>" %> <% foreach (whoozit.Models.PictureModel p in Model) { %> <td> <%: Html.TextBox("name",p.name) %> <%: Html.ValidationMessage(p.name) %> </td> <% } %> 我想重构这个以利用mvc2中强类型的html助手.我很难理解如何创建lambda表达式,并希望得到一些帮助.以下对我来说似乎不太正确. <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IList<whoozit.Models.PictureModel>>" %> <% foreach (whoozit.Models.PictureModel p in Model) { %> <td> <%: Html.TextBoxFor(???) %> </td> <% } %> 解决方法
首先,您不应该在视图中进行迭代.迭代意味着循环,循环意味着C#/ VB.NET,C#/ VB.NET在视图中导致意大利面条代码.
我建议您使用Editor Templates.这样您就不需要在视图中编写循环.在?/ Views / Home / EditorTemplates / PictureModel.ascx中添加以下文件: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<whoozit.Models.PictureModel>" %> <td> <%: Html.TextBoxFor(x => x.name) %> <%: Html.ValidationMessageFor(x => x.name) %> </td> 请注意,partial现在强类型为whoozit.Models.PictureModel而不是IList< whoozit.Models.PictureModel>.现在剩下的就是从主视图中包含这个部分: <%: Html.EditorFor(x => x.Pictures) %> 其中Pictures是IList< whoozit.Models.PictureModel>类型的属性.在您的主视图模型上.这将自动为集合中的每个元素调用partial,这样您就不需要在视图中编写丑陋的循环. 它只是按惯例工作:部分需要被称为PictureModel.ascx作为列表元素的类型名称,位于?/ Views / Home / EditorTemplates或?/ Views / Shared / EditorTemplates文件夹中. 编辑/显示模板将使您的视图更加优雅. 备注:在.NET中,约定是以大写字母开头的属性名称,因此我建议您将name属性重命名为Name.写作和阅读感觉更自然: <%: Html.TextBoxFor(x => x.Name) %> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ASP.Net页面刷新后自动滚动到原来位置
- asp.net-mvc-3 – 如何在razor视图中设置@ model.attribute
- asp.net – asp图表错误
- asp.net-mvc – NGEN可以与Azure网站一起使用吗?
- asp.net – Html.Partial vs Html.RenderPartial&Html.
- asp.net – 如何连接到本地SQL Server数据库?
- asp.net-mvc – 如何从umbraco mvc中的表面控制器添加查询字
- ASP.NET页面在IE缓存的清除办法
- asp.net – 我可以在嵌入式Javascript部分中使用VB变量吗?
- .NET发送电子邮件的最佳方法(System.Net.Mail有问题)
- asp.net-mvc-2 – 如何在ASP.NET MVC中实现自定义
- js或css文件合并的三种方式推荐
- ASP.NET MVC3:在客户端的$Ajax请求之后,Request
- 如何在加载数据时创建页面覆盖 – asp.net/jquer
- asp.net MVC5,如何使用mysql数据库,使用MVC框架
- asp.net-mvc – MVC 4从基本路由中删除“home”
- asp.net-mvc – 模型需要注入依赖项时的模型(Vie
- asp.net-mvc – 动态年份下载与下拉
- asp.net-core – .net core(csproj)global.json’
- asp.net http服务器推送到客户端