我已经被困在这个错误上差不多一天了,而且我不明白为什么我会得到它。
错误:
类型的例外 ' Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'发生在 System.Core.dll但未在用户代码中处理
其他信息:最佳重载方法匹配' System.Web.Helpers.WebGrid.Bind
控制器:
var data = (from brand in db.Brand
from division in db.Division
from supplier in db.Supplier
where brand.BrandID == division.DivisionID
where product.SupplierID == supplier.SupplierID
select new ModelGrid
{
BrandID = brand.BrandID,
BrandName = brand.BrandName,
DivisionName = division.DivisionName,
CompanyName = supplier.CompanyName,
ContactName = supplier.ContactName,
Country = supplier.Country
}).ToList();
return View(data);
查看:
WebGrid grid = new WebGrid(Model);
grid.Bind(Model, rowCount: ViewBag.count, autoSortAndPage: false);
@grid.GetHtml(
columns: grid.Columns(
grid.Column("BrandID", "Brand ID", canSort: true),
grid.Column("BrandName", "Brand Name", canSort: true),
grid.Column("DivisionName", "Division Name", canSort: true),
grid.Column("CompanyName", "Company Name", canSort: true),
grid.Column("ContactName", "Contact Name", canSort: true),
grid.Column("Country", "Country", canSort: true)
)
)
和型号:
public class ModelGrid
{
public int BrandID { get; set; }
public string BrandName { get; set; }
public string DivisionName { get; set; }
public string CompanyName { get; set; }
public string ContactName { get; set; }
public string Country { get; set; }
}
从我能找到的内容来看,当使用匿名类型时,你似乎得到了这个错误,但是我想我已经避免了这个。我现在还在学习,所以非常感谢任何建议。
答案 0 :(得分:0)
试试这个,看它是否有效
grid.Bind(Model, rowCount: (int)ViewBag.count, autoSortAndPage: false);
我感觉它失败了,因为ViewBag是一个动态类型,并且它不知道Count是一个int而Bind方法需要一个int for rowCount。