我正在尝试为MVC中的一个视图创建一个强类型模型。该模型是LINQ GroupBy查询的结果,因此它是下面显示的类型(按姓氏的第一个字母对员工进行分组)。
@model IQueryable<IGrouping<string, Employee>>
我不确定为什么,但它不让我有这种类型的模型。我得到的错误信息是: 一个开头“&lt;”缺少相应的结束“&gt;”。这是不正确的。
我知道我可以创建一个特定于视图的模型并填充它,但我想知道为什么这个模型似乎不起作用?
答案 0 :(得分:3)
默认情况下,一组非常有限的命名空间可供剃刀视图直接使用。尝试将其扩展为完全限定名称,并查看问题是否仍然存在:
@model System.Linq.IQueryable<System.Linq.IGrouping<string, Name.Space.Employee>>
答案 1 :(得分:1)
我不知道你为什么会收到这个错误,因为你似乎使用了正确的Razor代码。通过这个不正确的错误消息,页面中的其他地方实际上可能存在错误。
可以帮助您确定错误的真正来源的解决方法是创建自己的强类型模型类,该类可以将此数据作为其属性:
public class EmployeeListViewModel
{
public IQueryable<IGrouping<string, Employee>> EmployeesByCompanyTitle {get;set;}
}
(有些人认为这是一种更好的方法,因为您现在可以更轻松地向视图模型添加信息。)