我正在尝试在asp.net mvc应用程序中构建通用网格视图。
让我用一些代码解释一下:
public interface ITrustGrid<T>
{
IPagedList<T> Elements { get; set; }
IList<IColumn<T>> Columns { get; set; }
IList<string> Headers { get; }
}
这是一个类的接口,允许我在控制器中设置列和表达式。
我将实现传递给如下部分视图:
<% Html.RenderPartial("SimpleTrustGridViewer", ViewData["employeeGrid"] as TrustGrid<EmployeeInfoDTO>); %>
问题是,我无法理解如何生成呈现网格通用的部分视图。
换句话说,我想把这个:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ITrustGrid<EmployeeInfoDTO>>" %>
变成这样:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ITrustGrid<T>>" %>
如何用最简单的方式使我的部分视图泛型?
编辑:
我通过使用trustgridbuilder解决了这个问题,它有一个公共的trustgrid gettrustgrid()方法,该方法返回一个非通用的trustgrid。trustgrid包含字符串而不是linq内容。所以我在getTrustGrid()方法中执行LINQ,并将字符串放入TrustGrid对象中。
谢谢大家帮助我走上正轨。
最佳答案
这样做是不可能的。原因是.aspx
会生成一个类,你对它没有太多的控制,并且不能向它添加一个泛型参数。我想最直接的方法是把它作为object
来传递。
关于c# - 泛型局部 View :如何将泛型类设置为模型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/875085/