我使用帶彈出窗口編輯器的Kendo Grid來顯示數據庫中的行。這些行來自「FemaleAdvice」表。每個FemaleAdvice對象將屬於一個FemaleCategory,因爲FemaleCategory是一個查找表,並且當用戶選擇一個FemaleCategory時,將顯示一個FemaleAdvice對象標題和說明列表。單擊添加新記錄時,Kendo Grid Popup不會觸發
在讓用戶編輯一個FemaleAdvice對象屬於哪個FemaleCategory的情況下,顯示類別的標題而不是數據庫Key是有意義的。我已經採取了幾個步驟來做到這一點,但現在當我點擊「添加新記錄」時,控制檯中出現「Uncaught:ReferenceError:Category is not defined」錯誤。我覺得這很容易,但我對MVC /劍道有點新鮮,所以我的無知正在顯現。我的代碼如下:
//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);
}
編輯exising記錄時是否出現同樣的錯誤,或者只有在添加新記錄時纔會出現這種錯誤? – jebar8
僅當我添加新記錄時。編輯正常。 –
Oosh,我剛剛意識到,編輯會在FemaleCategory表中創建一個重複的行。 –