我正在使用MVC.Net开发列表生成器。
我创建了ColumnInfo<T>
和Report<T>
类,如下所示:
public class ColumnInfo<T>
{
public string Title{get;set;}
public Func<T,object> Projector{get;set;}
}
public class Report<T>
{
public IList<ColumnInfo<T>> Header{get;set;}
public IQueryable<T> Result{get;set;}
......
}
我想要做的是通过在局部视图中枚举Report
来创建Header
的标题和正文。
问题是:如何将我的通用Report<T>
引入Razor视图?
这就是我的想法:
@foreach(var row in Model.Result)
{
<tr>
@foreach(var col in Model.Header)
{
<td>@col.Projector(row)</td>
}
</tr>
}
答案 0 :(得分:0)
可能的解决方案是在视图中使用动态作为通用类型:
@model Models.Report<dynamic>
您的控制器还需要将类型设置为动态:
public ActionResult Report()
{
var viewModel = new Report<dynamic>();
return View(viewModel);
}
不确定此解决方案是否适合您的问题,但我注意到无法设置:@model Models.Report<T>