RenderPartialExtensions.RenderPartial和DisplayExtensions.DisplayFor之间有什么区别

时间:2011-07-01 20:55:27

标签: asp.net asp.net-mvc asp.net-mvc-2 asp.net-mvc-3 c#-4.0

我想要一个“动态”表ascx:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<dynamic>" %>

<% foreach (var element in Model.Elements) { %>
    <%= Html.DisplayFor(m => element) %>
<% } %>

带模特:

public class TableViewModel<ElementType> {
     public List<ElementType> Elements {get;set;}
}
  1. 首先奇怪的是我不能在ascx指令中写这样的东西: <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl>" %>

  2. 那么第二个问题 - 我不能使用DisplayFor函数扩展,因为编译器不能推导出HtmlHelper&lt;&gt;通用参数,因为ascx模型是动态的。这就是为什么我必须更换: <%= Html.DisplayFor(m => element) %> 与: <% RenderPartialExtensions.RenderPartial(Html, "Table", element); %>

  3. 所以我的问题是我做错了什么,或者我不是DisplayFor和RenderPartial在性能方面有什么区别?

    提前致谢。

1 个答案:

答案 0 :(得分:1)

可能你可以试着只使用Display?

RenderPartial只渲染部分视图。 DisplayFor使用共享视图中的UIHint或DisplayTemplate进行渲染。