Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/154.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表达式对于编辑器模板太复杂_Asp.net Mvc_Entity Framework_Razor_Lambda - Fatal编程技术网

Asp.net mvc Lambda表达式对于编辑器模板太复杂

Asp.net mvc Lambda表达式对于编辑器模板太复杂,asp.net-mvc,entity-framework,razor,lambda,Asp.net Mvc,Entity Framework,Razor,Lambda,在我的视图中,有一行代码呈现编辑器模板 但是,它返回错误: 模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式。 这似乎是实现我想要的最优雅的方式,但我意识到视图中的lambda表达式对于编辑器模板来说太复杂了 有人能建议如何使这项工作或建议我一个更好的方法吗 查看 @Html.EditorFor(model => model.Approvers.Where(a => a.ApprovalCount > 0)) 编辑器模板 @model Project.V

在我的视图中,有一行代码呈现编辑器模板

但是,它返回错误:

模板只能用于字段访问、属性访问、一维数组索引或单参数自定义索引器表达式。

这似乎是实现我想要的最优雅的方式,但我意识到视图中的lambda表达式对于编辑器模板来说太复杂了

有人能建议如何使这项工作或建议我一个更好的方法吗

查看

@Html.EditorFor(model => model.Approvers.Where(a => a.ApprovalCount > 0))
编辑器模板

@model Project.ViewModels.AssignedApproverData

<div class="span3">
    <label class="checkbox inline">
        @Html.HiddenFor(model => model.EmployeeID)    
        @Html.CheckBoxFor(model => model.Assigned)
        @Html.DisplayFor(model => model.FullName)
    </label>
</div>
视图模型

using System;
using System.Collections.Generic;
using Project.Models;

namespace Project.ViewModels
{
    public class AssignedApproverData
    {
        public string EmployeeID { get; set; }
        public string FullName { get; set; }
        public bool Assigned { get; set; }
        public int ApprovalCount { get; set; }
    }
}
namespace Project.ViewModels
{
    public class ChangeRequestViewModel
    {
        public virtual ICollection<AssignedApproverData> Approvers { get; set; }
    }
}
namespace Project.ViewModels
{
公共类ChangeRequestViewModel
{
公共虚拟ICollection审批者{get;set;}
}
}

错误消息说明了一切:不能将复杂的lambda表达式与强类型助手一起使用。仅支持属性访问和索引器访问表达式

有人能建议如何使这项工作或建议我一个更好的方法吗

当然,通过使用视图模型

因此,继续在视图模型上定义一个属性,您可以在视图中使用它,而不是在视图中编写这样的代码:

@Html.EditorFor(model => model.AcceptedApprovers)
并且您将在视图模型上具有相应的属性:

public class ChangeRequestViewModel
{
    public virtual ICollection<AssignedApproverData> AcceptedApprovers { get; set; }
}

显然,视图模型将只包含视图所需的信息,而不是更多,而不是更少。

错误消息说明了一切:您不能将复杂的lambda表达式与强类型帮助器一起使用。仅支持属性访问和索引器访问表达式

有人能建议如何使这项工作或建议我一个更好的方法吗

当然,通过使用视图模型

因此,继续在视图模型上定义一个属性,您可以在视图中使用它,而不是在视图中编写这样的代码:

@Html.EditorFor(model => model.AcceptedApprovers)
并且您将在视图模型上具有相应的属性:

public class ChangeRequestViewModel
{
    public virtual ICollection<AssignedApproverData> AcceptedApprovers { get; set; }
}
显然,视图模型将只包含视图所需的信息,而不是更多,而不是更少