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-mvc – 在EF 6中设置命令超时
- 模型视图控制器 – 如何在自定义MembershipProvider上调用I
- asp.net – 高级:HttpModule Init()方法在应用程序的生命中
- asp.net-mvc – 清理MVC 3.0应用程序中抛出的所有错误的方法
- asp.net-mvc – ASP.NET MVC Spark视图引擎
- 你能在每个动作上在ASP.NET-MVC中应用ActionFilter吗?
- asp.net – web部署工具2.1和web部署3.5有什么区别?哪一个
- asp.net-mvc – 使用自定义格式的ASP.NET MVC ViewModel映射
- asp.net-mvc – ASP MVC 5项目’New Scaffolded Item …’在
- 有关在asp.net中显示用户消息的好方法的建议吗?
- asp.net-mvc – ASP.NET MVC中的Flat和Nested Vi
- asp.net – 如何迭代DataTable中给定行中的所有项
- ASP.NET工作进程仍然以31kb的大小返回数据
- asp.net-mvc – 如何将可视化设计器集成到开发过
- asp.net – 有没有办法知道是否有人为您的网站添
- asp.net-mvc – 将DropDownList绑定到MVC视图中
- asp-classic – 检索ADO Recordset字段名称(经典
- asp.net – 如何从HttpResponseMessage获取对象?
- asp经典 – ASP检查请求方法
- “经典”ASP.NET页面和Microsoft MVC可以在同一个
