C# 复杂类型的MVC WebGrid
我正在创建一个webgrid。我的一列属于集合复杂类型:C# 复杂类型的MVC WebGrid,c#,asp.net-mvc,entity-framework,webgrid,C#,Asp.net Mvc,Entity Framework,Webgrid,我正在创建一个webgrid。我的一列属于集合复杂类型: [Table("RequestStatus",Schema="dbo")] public class RequestStatus { [Key] public int Id { get; set; } public string Status { get; set; } } 在我的实体中: public virtual ICollection<RequestStatus> RequestSt
[Table("RequestStatus",Schema="dbo")]
public class RequestStatus
{
[Key]
public int Id { get; set; }
public string Status { get; set; }
}
在我的实体中:
public virtual ICollection<RequestStatus> RequestStatuses { get; set; }
[NotMapped]
public string LastRequestStatus
{
get { return this.RequestStatuses.Last().Status; }
}
我在实体中创建了只读属性:
public virtual ICollection<RequestStatus> RequestStatuses { get; set; }
[NotMapped]
public string LastRequestStatus
{
get { return this.RequestStatuses.Last().Status; }
}
但我得到:
System.NotSupportedException:指定的类型成员“LastRequestStatus”在LINQ to实体中不受支持。仅支持初始值设定项、实体成员和实体导航属性
我假设这是因为这个属性没有映射到db字段。是否有一种方法可以直接处理这种情况,或者我需要为此编写自定义排序
提前谢谢 试试这个:
get { return this.RequestStatuses.ToList().Last().Status; }
或
读一下这个
我创建了一种自定义排序。 当我在查询字符串sort={property which not exist}中发出时,webgrid不进行排序,而是按原样给出结果。 如果我编辑此列的标题以发出带有_LastRequestStatus的查询字符串(在我的示例中),我将签入控制器,如果querystring[“sort”]等于此字符串(_LastRequestStatus),执行适当的排序(ASC,DESC-sortdir in querystring),并像以前一样将该列表传递给视图。
从这里开始,webgrid无需干预即可根据需要处理分页。所有这些都可以在view+controller中完成,而不需要客户端脚本(通常我对客户端脚本没有问题,但我认为这样更可读,特别是如果我在几个月后看到此代码)。这不起作用。如果我有一个未映射到实体的简单字段,它将不起作用。例如:公共字符串SomeProp{get;set;}。给出了相同的错误。