问题描述
我只是想创建一个带有内联剑道下拉菜单的剑道网格。像下面这样
我保持数据库值如下
所以,SampleModel,我是这样创建的,我只在 DB 中保留 TypeId
public class SampleModel
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public int TypeId { get; set; }
public string TypeName{ get; set; }
}
public class ListItem
{
public int Id { get; set; }
public string Name { get; set; }
}
这是包含 EditorTemplate 名称的网格代码片段
@(Html
.Kendo()
.Grid<SampleModel>()
.Name("grid")
.Columns(columns =>
{
columns.Bound(p => p.Name);
columns.Bound(e => e.TypeId).EditorTemplateName("Type").Title("Type").ClientTemplate("#:TypeName#");
columns.Bound(p => p.Description);
columns.Command(p =>
{
p.Edit();
p.Destroy();
});
})
.ToolBar(t =>
{
t.Create();
})
.DataSource(dataSource => dataSource
.Ajax()
.Model(m =>
{
m.Id(mr => mr.Id);
})
.Create(cr => cr.Action("Create","Sample"))
.Read(read => read.Action("Read","Sample"))
.Update(upd => upd.Action("Update","Sample"))
.Destroy(dest => dest.Action("Delete","Sample"))
)
)
这是我的编辑器模板代码片段
@using System.Collections
@model System.Int32
@(Html.Kendo().DropDownList().BindTo((IEnumerable)ViewBag.Types).DataValueField("Id").DataTextField("Name").Name("TypeId"))
所以我实现了如下代码
public ActionResult Read([DataSourceRequest] DataSourceRequest request)
{
ViewBag.Types = GetTypes();
var res = sampleService.GetDB_Data();
return Json(res.Data.ToDataSourceResult(request));
}
public List<ListItem> GetTypes()
{
List<ListItem> types = new List<ListItem>();
types.Add(new ListItem()
{
Id = 1,Name = "Good"
}
);
types.Add(new ListItem()
{
Id = 2,Name = "Bad"
}
);
return types;
}
但这不是映射或未加载这些图像上看到的下拉列表
未映射值,如图所示,
甚至没有加载kendo下拉菜单,在后端我可以看到GetTypes()返回值,但是当涉及到前端时,它是这样显示的
感谢是否可以显示此错误或所需的修改
解决方法
我相信这个问题是由于编辑器的名字造成的。不要显式指定名称,而是使用 DropDownFor 帮助器并让小部件为您生成名称。
例如
@(Html.Kendo().DropDownListFor(x=> x).BindTo((IEnumerable)ViewBag.Types).DataValueField("Id").DataTextField("Name"))