Asp.net mvc 5 MVC5WebGrid问题

Asp.net mvc 5 MVC5WebGrid问题,asp.net-mvc-5,webgrid,Asp.net Mvc 5,Webgrid,这是我的问题。在我的页面上,我正在使用几个webgrids从数据库中的不同表中提取数据。我在获取包含要显示的数据的列时遇到问题。如果我注释掉该列,网格将显示,并且必须根据该表中的数据量更正页数。如果我将该列放回,我会得到该列的名称不存在。所有网格都会发生这种情况。下面是代码的设置: 在控制器页面上: var cdb = new CommonModel(); IEnumerable<SelectListItem> _for = cdb.Formats .OrderBy(

这是我的问题。在我的页面上,我正在使用几个webgrids从数据库中的不同表中提取数据。我在获取包含要显示的数据的列时遇到问题。如果我注释掉该列,网格将显示,并且必须根据该表中的数据量更正页数。如果我将该列放回,我会得到该列的名称不存在。所有网格都会发生这种情况。下面是代码的设置:

在控制器页面上:

var cdb = new CommonModel();
IEnumerable<SelectListItem> _for = cdb.Formats
        .OrderBy(f => f.FormatName)
        .Select(f => new SelectListItem { Value = f.FormatID.ToString(), Text = f.FormatName });
ViewBag.Forma = _for;
如果我运行该页面,则会出现以下错误:
列“FormatName”不存在。该表将其列为FormatName,但我也尝试了Format、Formats和Name,结果是该列不存在。很可能我没有正确设置某些内容,从而导致此问题。有人看到我遗漏了什么吗?

您使用LINQ将行选择到
SelectListItem
对象的集合中,因此没有,就不会有
FormatName
列。您的选择将是(来自):

  • 残废
  • 团体
  • 精选
  • 正文
  • 价值观
如果要使用表中的列,请不要使用
SelectListItem

@model HomeInventory.Web.Areas.Classes.Video
@{
    ViewBag.Title = "Add Movies / Television Shows";
    Layout = "~/Views/Shared/_MovieLayout.cshtml";
}
@{
var fgrid = new WebGrid(source: ViewBag.Forma,
                        defaultSort: "FormatName",
                        rowsPerPage: 3, canSort: false,
                        pageFieldName: "pg");


}
@fgrid.GetHtml(tableStyle: "grid", columns: fgrid.Columns(fgrid.Column(format: (Formats) => Html.CheckBox("FormatID")), fgrid.Column("FormatName")))
                @Html.ValidationMessageFor(model => model.Formats, "", new { @class = "text-danger" })