Asp.net mvc 使用lambda表达式预先选择对象属性,然后在MVC中显示?
目前,在MVC中,每当我们想要列出项目时,都必须手动定义列:Asp.net mvc 使用lambda表达式预先选择对象属性,然后在MVC中显示?,asp.net-mvc,linq,lambda,Asp.net Mvc,Linq,Lambda,目前,在MVC中,每当我们想要列出项目时,都必须手动定义列: <tr> <td> @Model.Name </td> <td> @Model.Age </td> <td> @Model.Gender </td> </tr> @型号.名称 @模型年龄 @模型.性别 但是,我想做的是创建一个ViewMod
<tr>
<td>
@Model.Name
</td>
<td>
@Model.Age
</td>
<td>
@Model.Gender
</td>
</tr>
@型号.名称
@模型年龄
@模型.性别
但是,我想做的是创建一个ViewModel,在其中指定应该使用哪些列,例如:
var model = new PersonViewModel(
// List of persons
CollectionOfPersons,
// List of columns that we want to display
new Expression<Func<Person, object>>[]
{
x => x.Name,
x => x.Age,
x => x.Gender
});
var模型=新PersonViewModel(
//人员名单
收藏家,
//要显示的列的列表
新表达式[]
{
x=>x.Name,
x=>x.年龄,
x=>x.性别
});
那么在我们看来,我所需要做的就是:
<tr>
// Model.Predicates is our ViewModel's selected columns
@foreach(var predicate in Model.Predicates)
{
<td>
// This would basically loop each pre-defined lambda expression in our ViewModel
@Html.DisplayFor(predicate)
</td>
}
</tr>
//谓词是ViewModel的选定列
@foreach(Model.Predicates中的var谓词)
{
//这将基本上循环ViewModel中每个预定义的lambda表达式
@DisplayFor(谓词)
}
我必须承认,我对表达的理解非常薄弱,到目前为止,我在寻找信息方面一直没有成功。有人知道这是否可行吗?似乎html帮助程序不是这样工作的(将表达式作为变量传递)。编译器显式地需要一个表达式才能确定TModel和TResult类型才能工作