Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 使用lambda表达式预先选择对象属性,然后在MVC中显示?_Asp.net Mvc_Linq_Lambda - Fatal编程技术网

Asp.net mvc 使用lambda表达式预先选择对象属性,然后在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

目前,在MVC中,每当我们想要列出项目时,都必须手动定义列:

<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类型才能工作