ASP.Net MVC的Kendo UI。网格排序错误与其他实体属性

时间:2015-03-02 12:23:40

标签: asp.net-mvc sorting kendo-ui grid

我对kendo ui grid有一个排序问题。 我有一个实体类端口,在部分类中我添加了额外的属性:

public partial class Port {

    [NotMapped]
    [XmlIgnore]
    [ScriptIgnore]
    public string CountryName { get; set; }
}

我在其他程序部分使用此属性。 在控制器中我有:

    public ActionResult Index()
    {
        if (!CanViewPorts())
            return new EmptyResult();
        ViewBag.CanEditPorts = CanEditPorts();
        return View();
    }

    public ActionResult Ports([DataSourceRequest] DataSourceRequest request)
    {
        if (!CanViewPorts())
            return new EmptyResult();
        var all = _classificatoryService.GetAllPorts();
        return Json(all.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
    }

我在视图中使用方法Ports来填充kendo ui grid。 我的观点:

@(Html.Kendo().Grid<Port>()
      .Name("Ports")
      .ToolBar(toolbar => toolbar.Template(Toolbar().ToString()))
      .Columns(columns =>
      {
          columns.Bound(c => c.PortId);
          columns.Bound(c => c.Code);
          columns.Bound(c => c.Name);
          columns.Bound(c => c.AlternativeName);
          columns.Bound(c => c.SubDivision);
          columns.Template(@<text></text>).ClientTemplate("<a class='k-button k-button-icontext' href='" + Url.Action("Details", "Port") + "/#=PortId#'><span class='glyphicon glyphicon-edit mr5'></span>Details</a>").Width(110);  //"<#=PortId#>"
          columns.Template(@<text></text>).ClientTemplate("<a class='newPortBtn k-button k-button-icontext' href='" + Url.Action("NewPort", "Port") + "/?portId=#=PortId#'><span class='glyphicon glyphicon-edit mr5'></span>Edit</a>").Visible(canEditPorts).Width(110);
      })
                .Sortable()
                .ColumnMenu()
                .Filterable()
                .Pageable(pageable => pageable
                    .Refresh(true)
                    .PageSizes(true)
                    .ButtonCount(5))
                .DataSource(dataSource => dataSource
                    .Ajax()
                    .Model(model => model.Id(x => x.PortId))
                        .Read(read => read.Action("Ports", "Port"))
                    .Sort(sort => sort.Add(x => x.ChartererId).Descending())
                        .Create(c => c.Action("NewPort", "Port"))

                ))

正如您所见,我未在此视图中使用其他属性国家/地区名称

好的,网格获取端口并正确显示它。 然后我尝试排序并单击列标题。

首先单击(ASC) - 确定,网格按此列按升序排序。

第二次单击(DESC) - 确定,网格按此列按降序排序。

第三次单击(unsort) - 网格必须未排序,但我有500(内部服务器错误)。

在chrome / Network / Preview我有:

  '/'应用程序中的服务器错误。 LINQ to Entities不支持指定的类型成员“CountryName”。只有初始化者,   支持实体成员和实体导航属性。

如何解决这个问题?

0 个答案:

没有答案