lan*_*der 13 model-view-controller asp.net-mvc naming-conventions dynamic-data
关于MVC 2中DisplayTemplates和EditorTemplates的命名约定,我有几个问题.
例如,如果我有一个带有子帐户列表的客户对象,我该如何:
为帐户列表创建一个显示模板,该文件名为什么?
当我在做一个foreach( var c in Model.Accounts )
如何在foreach循环中调用显示器镜腿时?当我Html.DisplayFor( x => x )
在foreach里面做的x
是模型而不是在这种情况下c
.
提前致谢.
Pau*_*aul 13
是的,这是我最喜欢的功能之一,但对某些事情来说有点混乱.
因此,为任何类创建模板,名称都基于类型的Name属性,例如,如果在视图中执行<%= model.GetType().Name%>,您可以看到我的意思.例如,如果您的帐户列表是IList,则会返回对该类型的.Name的调用List`1
.这是一个合法的文件名,所以如果你放入List`1.ascx
你的DisplayTemplates文件夹,它会找到并使用它.从我所知道的,它不会遍历类层次结构,所以例如,如果你把IEnumerable`1.ascx文件放在那里,它将找不到它.
要在循环中显示,您需要将item变量传入lambda,因此在您的示例中:
<% foreach (var c in Accounts){ %>
<li><%= Html.DisplayFor(x => c) %></li>
<%}%>
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.保罗
sir*_*ian 13
我意识到这个问题有点旧,但至少在MVC 3中,如果你想使用列表自定义显示/编辑模板,你可以传入模板的名称:
Html.DisplayFor(model => model.Account, "AccountList")
Run Code Online (Sandbox Code Playgroud)
那么模板的名称将是"AccountList".
Ale*_*ite 11
Brad Wilsons博客http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-4-custom-object-templates.html有一个关于自定义对象的DisplayTemplates和EditorTemplates的示例,它讨论了可能有助于解决您的问题的问题.
关于第一个问题,重要的是您的模板位于系统查找匹配名称的文件夹中,例如
~/Views/ControllerName/DisplayTemplates/TemplateName.aspx & .ascx
~/Views/Shared/DisplayTemplates/TemplateName.aspx & .ascx
Run Code Online (Sandbox Code Playgroud)
(将EditorTemplates替换为EditorTemplates以用于编辑器模板的搜索路径.)
按顺序尝试以下模板名称:
我不确定你的第二个问题的答案.假设var c实际上是有效的帐户c是正确的吗?当你写作的时候你Html.DisplayFor(x => x)
也可以写作Html.DisplayModelFor(c => c)
?或者你想要`Html.DisplayFor(x => x.AccountName)?
归档时间: |
|
查看次数: |
13326 次 |
最近记录: |