0

我正在学习 MVC 3、MvcContrib 网格,当尝试使用带有排序和分页选项的网格创建视图时,出现错误。“在 MvcApplication5.Models.Order 类型上找不到名为 'Customer.CompanyName' 的属性” 在此行

orders = orders.OrderBy(sort.Column, sort.Direction);

请让我知道有什么问题,因为 Customer 表的代码工作正常可能只是一个表,而 Order 表查询包括 3 个表?

控制器代码如下

public ActionResult Index(GridSortOptions sort, int? page)
{
    IEnumerable<Order> orders = db.Orders.Include(o => o.Customer).Include(o => o.Employee).Include(o => o.Shipper);

    if (sort.Column != null)
    {
        orders = orders.OrderBy(sort.Column, sort.Direction);
    }
    //orders = orders.AsPagination(page ?? 1, 25);

    ViewData["sort"] = sort;
    return View(orders);
} 

查看代码在这里

@model IEnumerable<MvcApplication5.Models.Order>
@using MvcContrib.UI.Grid;
@using MvcContrib.UI.Pager;

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>


@Html.Grid(Model).Sort((GridSortOptions)ViewData["sort"]).Columns(col => {
    col.For(o => o.Customer.CompanyName).Named("Customer").Sortable(true).SortColumnName("Customer.CompanyName");
    col.For(o => o.Employee.LastName).Named("Employee");
    col.For(o => o.OrderDate).Named("Order Date");
    col.For(o => o.RequiredDate).Named("Required Date");
    col.For(o => o.ShippedDate).Named("Shipped Date");
    col.For(o => o.Shipper.CompanyName).Named("Shipper");
    col.For(o => o.Freight).Named("Frieght");
    col.For(o => o.ShipName).Named("Ship Name");
    col.For(o => o.ShipAddress).Named("Ship Address");
    col.For(o => o.ShipCountry).Named("Ship Country");
    col.For(o => @Html.ActionLink("Edit", "Edit", new { id = o.OrderID }));
    col.For(o => @Html.ActionLink("Details", "Details", new { id = o.OrderID }));
    col.For(o => @Html.ActionLink("Delete", "Delete", new { id = o.OrderID }));    
})
4

1 回答 1

0

好吧,我仍然没有看到我的问题的任何答案,但是在查看网络时,我发现这个链接以某种方式很有用,甚至它不是我问题的解决方案,但仍然可以使用。

使用 MVCContrib Grid 和 Pager 的 ASP.NET MVC 分页/排序/过滤

在这里,他正在使用带有类别名称列的修改后的产品类别。因此,直接从表格中填充产品,从产品和类别名称中填充产品视图结构,然后在网格中显示其字段。因此,当用户点击不是产品表直接字段的类别名称时,可以使用这种方式进行排序和过滤。

但是仍然需要知道我们是否可以使用此解决方案对参考列进行排序,就像我们对直接列所做的那样。

资历架构

于 2013-09-15T20:05:30.127 回答