我有一个非常简单的产品,它有一个来自用户表的编辑器。
整个事情都映射在edmx中。
在我的fetch方法中,我有一些代码:
public ActionResult Products_Read([DataSourceRequest]DataSourceRequest request)
{
using (var context = new ProductModel())
{
var products = from row in context.Products select new { row.Id, row.Title, row.EditorId, row.Editor.Name };
var result = products.ToDataSourceResult(request);
//Debug:
//var s = new JavaScriptSerializer().Serialize(Json(result, JsonRequestBehavior.AllowGet));
return Json(result, JsonRequestBehavior.AllowGet);
}
}
不幸的是,我可以看到Editor.Name被序列化为" Name"。
在cshtml上,我有了我的网格
@(Html.Kendo().Grid<Product>()
.Name("grid")
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => model.Id(c => c.Id))
.Read(read => read.Action("Products_Read", "Product"))
.Update(update => update.Action("Products_Update", "Product"))
)
.Columns(product =>
{
product.Bound(p => p.Id).Hidden(true);
product.Bound(p => p.Title).Title("Title");
product.Template(p => p.Editor.Name).Title("Editor");//<-- HERE
网格中没有任何内容,我认为我必须装饰一些内容,以便网格知道在哪里获取值。
否则我可以做一个viewmodel,但是我会放弃很多功能的构建。
下一步是在编辑产品时获取下拉列表。我希望有人可以简单地链接到一个开箱即用的地方。
答案 0 :(得分:1)
您需要像这样设置模板
.Columns(product =>
{
product.Bound(p => p.Editor.Name).Template(@<text>
<strong>@item.Name</strong>
</text>).Title("Editor");
})