[英]Kendo UI Grid bind
我試圖綁定Kendo Grid。但是它向我顯示以下錯誤
傳遞到字典中的模型項的類型為'System.Data.Entity.DbSet
1[KendoApp.Product]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
1 [KendoApp.Models.ProductModels1[KendoApp.Product]', but this dictionary requires a model item of type 'System.Collections.Generic.IEnumerable
]”。
我的觀點
@model IEnumerable<KendoApp.Models.ProductModels>
@(Html.Kendo().Grid(Model)
.Name("Grid")
.Columns(columns =>
{
columns.Bound(p => p.ProductID);
columns.Bound(p => p.ProductName);
columns.Bound(p => p.UnitPrice);
columns.Bound(p => p.UnitsInStock);
}).Pageable()
)
我的控制器
public ActionResult KendoGrid()
{
//IEnumerable<Product> products = new northwindEntities().Products;
var products = new northwindEntities().Products;
ViewBag.Products = products;
return View(products);
產品型號
public class ProductModels
{
public int ProductID { get; set; }
public string ProductName { get; set; }
public Nullable<int> SupplierID { get; set; }
public Nullable<int> CategoryID { get; set; }
public string QuantityPerUnit { get; set; }
public Nullable<decimal> UnitPrice { get; set; }
public Nullable<short> UnitsInStock { get; set; }
public Nullable<short> UnitsOnOrder { get; set; }
public Nullable<short> ReorderLevel { get; set; }
public bool Discontinued { get; set; }
}
}
有什么錯誤? 如何解決?
請嘗試一下
您的看法:
@(Html.Kendo().Grid<KendoApp.Models.ProductModels>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.ProductID);
columns.Bound(p => p.ProductName);
columns.Bound(p => p.UnitPrice);
columns.Bound(p => p.UnitsInStock);
})
.Pageable()
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("ProductsRead", "YourControllerName"))
)
)
您的控制器動作:
public JsonResult ProductsRead([DataSourceRequest] DataSourceRequest request)
{
var products = new northwindEntities().Products
.Select(p => new ProductModels {
ProductID = p.ProductID,
ProductName = p.ProductName,
UnitPrice = p.UnitPrice,
UnitsInStock = p.UnitInStock
})
.AsQueryable();
return Json(products.ToDataSourceResult(request));
}
public ActionResult KendoGrid()
{
return View();
}
KendoApp.Models.ProductModels的集合是您接受到視圖中並與Grid綁定的類型。 您從控制器傳遞的是KendoApp.Product類型的實體的集合。 它們不被視為同一類型(即使這些類中的所有屬性都是相同的),這就是為什么您會收到錯誤消息。
您需要做的是將KendoApp.Product實體轉換為控制器中ProductModels類的新IEnumerable集合。 就像是:
var products = new northwindEntities().Products.Select
(x => new KendoApp.Models.ProductModels
{
ProductID = x.ProductID,
ProductName = x.ProductName,
...
Discontinued = x.Discontinued
}
).ToList();
現在,var產品的類型為IEnumerable <KendoApp.Models.ProductModels>,您的視圖將接受該產品。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.