这是我的问题。在我的页面上,我使用数据库中的各种表格中的几个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;
在视图页面上:
@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" })
如果我运行该页面,则会收到以下错误: 列&#34; FormatName&#34;不存在。该表将其列为FormatName,但我也尝试使用格式,格式和名称,结果与列不存在相同。我很可能没有正确设置,导致这个问题。有谁看到我可能错过了什么?
答案 0 :(得分:0)
您已使用LINQ将行选择为SelectListItem
个对象的集合,因此否,不会有FormatName
列。您的选择是(来自https://msdn.microsoft.com/en-us/library/system.web.mvc.selectlistitem_properties%28v=vs.118%29.aspx):
如果您想使用表格中的列,请不要使用SelectListItem
。