我正在使用EditorFor()
帮助器在我的视图中呈现编辑模板,我想调用此模板中的DisplayFor()
来渲染显示模板。
喜欢这个
这是在/Shared/EditorTemplates/Client.ascx
中<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<BusinessNext.Models.Ef.Client>" %>
<%: Html.DisplayFor(client=>client) %>
在DisplayFor模板中,我渲染出客户端的属性。 DisplayFor模板在从其他地方调用时工作得很好,但是从EditorFor模板调用它不会渲染任何东西。似乎DisplayFor()
调用实际上从未实际进入DisplayFor模板。
答案 0 :(得分:4)
我担心唯一的方法是使用部分:
<%= Html.Partial("~/Views/Home/DisplayTemplates/Client.ascx", Model) %>
答案 1 :(得分:1)
如果模拟复杂对象是个好主意,或者我对嵌套模板的处理是否是黑客攻击,那么这可能是值得商榷的。这样做的好处是父母和子女的单一模板都可以有模板,而不必选择/使用部分视图。
除此之外,模板化视图可以嵌套,如果您使用部分视图作为介于两者之间。
外部模板将具有下面您要放置内部模板的内容:
Html.RenderPartial("SharedDisplayGoBetweenForFoo", item);
共享部分看起来像这样:
@model Foo
@Html.DisplayFor(a => a);
然后会调用内部模板,看起来就像其他模板一样。