Asp.net mvc 2 是否可以从EditorFor模板控件中使用DisplayFor()

Asp.net mvc 2 是否可以从EditorFor模板控件中使用DisplayFor(),asp.net-mvc-2,Asp.net Mvc 2,我正在使用EditorFor()helper在我的视图中呈现编辑模板,我想调用此模板中的DisplayFor()来呈现显示模板 像这样 这在/Shared/EditorTemplates/Client.ascx中 <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<BusinessNext.Models.Ef.Client>" %> <%: Html.DisplayFor(client

我正在使用
EditorFor()
helper在我的视图中呈现编辑模板,我想调用此模板中的
DisplayFor()
来呈现显示模板

像这样

这在/Shared/EditorTemplates/Client.ascx中

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<BusinessNext.Models.Ef.Client>" %>
<%: Html.DisplayFor(client=>client) %>

客户机)%%>

在DisplayFor模板中,我呈现了客户端的属性。当从其他地方调用DisplayFor template时,它工作得非常好,但从EditorFor template调用时,它不会渲染任何内容。看来,
DisplayFor()
调用实际上从未到达DisplayFor模板。

恐怕唯一的方法是使用部分:

<%= Html.Partial("~/Views/Home/DisplayTemplates/Client.ascx", Model) %>

如果为复杂对象创建模板是一个好主意,或者我对嵌套模板的处理方法是否是一种黑客行为,那么这可能是有争议的。这样做的好处是,父视图和子视图都可以有一个模板,而不必选择/使用局部视图

除此之外,如果使用局部视图作为中间对象,则可以嵌套模板化视图

外部模板将具有如下内容,您希望将内部模板放置在其中:

Html.RenderPartial("SharedDisplayGoBetweenForFoo", item);  
共享的分部文件如下所示:

@model Foo

@Html.DisplayFor(a => a);

然后将调用内部模板,它看起来与任何其他模板一样。

我尝试了,因为我使用了T4MVC,但它找不到视图用户控件。它返回标准错误,搜索目录却找不到。否则,我的T4MVC到目前为止一直在工作。这也没有,同样的错误-这两个文件夹有什么特别的吗?@mare,没有,不应该有什么特别的。试着传递一个字符串,看看它是否有什么不同。此外,错误消息中的搜索位置会告诉您什么?他们给出了一些提示吗?在这种情况下,使用T4MVC强类型类是不起作用的,但如果我提供了路径,它会起作用。这确实给我的代码引入了两个漏洞:1)我刚开始在大多数情况下使用DisplayFor和EditorFor,现在我对此有一个例外,2)我的规则的另一个例外是提供部分或渲染部分帮助程序的路径。对此有何评论?现在MVC4中似乎已修复了此问题-displayFor可以嵌套