我想要一个“动态”表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;}
}
首先奇怪的是我不能在ascx指令中写这样的东西:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl>" %>
那么第二个问题 - 我不能使用DisplayFor函数扩展,因为编译器不能推导出HtmlHelper&lt;&gt;通用参数,因为ascx模型是动态的。这就是为什么我必须更换:
<%= Html.DisplayFor(m => element) %>
与:
<% RenderPartialExtensions.RenderPartial(Html, "Table", element); %>
所以我的问题是我做错了什么,或者我不是DisplayFor和RenderPartial在性能方面有什么区别?
提前致谢。
答案 0 :(得分:1)
可能你可以试着只使用Display?
RenderPartial只渲染部分视图。 DisplayFor使用共享视图中的UIHint或DisplayTemplate进行渲染。