【发布时间】:2014-06-27 21:44:08
【问题描述】:
我正在使用带有弹出编辑器的 Kendo Grid 来显示数据库中的行。这些行来自“FemaleAdvice”表。每个FemaleAdvice 对象都属于FemaleCategory,因为FemaleCategory 是一个查找表,当用户选择FemaleCategory 时,将显示FemaleAdvice 对象的Titles 和Descriptions 列表。
在让用户编辑一个FemaleAdvice 对象属于哪个FemaleCategory 时,显示类别的标题而不是数据库键是有意义的。我已经采取了几个步骤来执行此操作,但是现在当我单击“添加新记录”时,我在控制台中收到“未捕获:ReferenceError:未定义类别”错误。我觉得这很容易,但我对 MVC/Kendo 有点陌生,所以我的无知正在表现出来。我的代码如下:
//FemaleAdvice Model
[Key]
[ScaffoldColumn(false)]
public Int64 FemaleAdviceKey { get; set; }
public string Title { get; set; }
public string Description { get; set; }
[Required]
[UIHint("FemaleCategoryKey")]
[DisplayName("Female Category")]
public Int64 FemaleCategoryKey { get; set; }
public virtual FemaleCategory Category { get; set; }
[UIHint("Body")]
public string Body { get; set; }
[ScaffoldColumn(false)]
public DateTime LastUpdated { get; set; }
//*************FemaleAdvice View**************
@(Html.Kendo().Grid<com.RomanceCoachOnTheGo.MVC.Models.FemaleAdvice>()
.Name("FemaleAdvice")
.ToolBar(toolbar =>
{
toolbar.Create();
})
.DataSource(dataSource => dataSource
.Ajax()
.Model(item => { item.Id(m => m.FemaleAdviceKey); })
.Create(c => c.Action("CreateFemaleAdvice", "Administrator"))
.Read(r => r.Action("ReadFemaleAdvice", "Administrator"))
.Update(u => u.Action("UpdateFemaleAdvice", "Administrator"))
.Destroy(d => d.Action("DeleteFemaleAdvice", "Administrator"))
)
.Columns(col =>
{
col.Bound(c => c.FemaleCategoryKey).ClientTemplate("#=Category.Title#");
col.Bound(c => c.Title);
col.Bound(c => c.Description);
col.Bound(c => c.Body);
col.Command(command => { command.Edit(); command.Destroy(); });
})
.Editable(editing => editing.Mode(GridEditMode.PopUp))
.Sortable()
.Pageable()
.Filterable()
)
//***********Relevant Controller Action***************
public ActionResult ReadFemaleAdvice([DataSourceRequest] DataSourceRequest request)
{
List<FemaleAdvice> advice = _db.FemaleAdvice.Include("Category").AllActive().ToList();
return Json(advice.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
public ActionResult CreateFemaleAdvice([DataSourceRequest] DataSourceRequest request, FemaleAdvice advice)
{
if (ModelState.IsValid)
{
advice.IsActive = true;
_db.FemaleAdvice.Add(advice);
_db.SaveChanges();
}
return Json(new[] { advice }.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
【问题讨论】:
-
您在编辑现有记录时是否会出现同样的错误,还是仅在添加新记录时才会出现这种情况?
-
仅当我添加新记录时。编辑工作正常。
-
哎呀,我才意识到,编辑会在 FemaleCategory 表中创建一个重复的行。
-
当我添加 ".ClientTemplate("#=Category.Title#");" 时才开始发生这种情况到 Grid 的列区域和“.Include("Category")”到控制器操作,以使 FemaleCatetoryKey 显示为标题而不是键。
标签: c# jquery asp.net-mvc kendo-ui kendo-grid