按照Telerik Mvc Grid Demo中设置的模式进行插入和编辑,直到控制器方法返回为止。
见:http://demos.telerik.com/aspnet-mvc/razor/Grid/EditingAjax?theme=vista
方法调用到我的存储库函数,成功更新数据库;但是,示例中的返回代码如下所示
[AcceptVerbs(HttpVerbs.Post)]
[CultureAwareAction]
[GridAction]
public ActionResult _InsertAjaxEditing()
{
EditableProduct product = new EditableProduct();
if (TryUpdateModel(product)) {
SessionProductRepository.Insert(product);
}
return View(new GridModel(SessionProductRepository.All()));
}
直到返回行,所以我尝试:
- 返回视图(new GridModel(myTypeRepository.All);
- 返回视图(new GridModel(mytypererepository . all . tolist ());
- 返回视图(new GridModel(myTypeRepository.All.ToArray());
- 返回视图(new GridModel(myTypeRepository.All);
- 返回视图(new GridModel(mytypererepository . all . tolist ());
- 返回视图(new GridModel(myTypeRepository.All.ToArray());
- 返回视图(GridModel (myTypeRepository.All))
- 返回视图(GridModel (myTypeRepository.All.ToList ()))
- 返回视图(GridModel (myTypeRepository.All.ToArray ()))
所有这些都导致了一个无法遵循的异常,因为它指向Telerik文件:GridActionAttribute.cs.
现在,因为它出现在方法的末尾,所以我不能确定它是返回语句还是html.Telerik.Grid。但是,正如我所说,我遵循了演示中的模式:
@(Html.Telerik().Grid<BerettaFarms.Models.FoodKind>()
.Name("myName")
.ToolBar(commands => commands.Insert())
.DataKeys(keys => keys.Add(c => c.myTypeId))
.DataBinding(dataBinding => {
dataBinding.Ajax()
.Select("SelectAjaxEditing", "myController")
.Insert("InsertAjaxEditing", "myController")
.Update("SaveAjaxEditing", "myController")
.Delete("DeleteAjaxEditing", "myController");
})
.Columns(columns => {
columns.Bound(o => o.Name).Width(200);
columns.Bound(o => o.Description).Width(400);
columns.Command(commands => {
commands.Edit();
commands.Delete();
}).Width(200);
})
.DataBinding(dataBinding => dataBinding.Ajax().Select("AjaxIndex", "myController"))
.Editable(editing => editing.Mode(GridEditMode.InLine))
.Sortable()
.Scrollable(h => h.Height("700px"))
.Groupable()
.Filterable()
)
如果有人知道为什么重新绑定失败了?或者如果是其他原因,请告诉我。
事实证明,这是与工具相关的问题之一,而不是与内容相关的问题。当您删除此方法中的所有断点并让代码运行时,它会按预期工作。不知何故,当处于调试模式时,设置了断点,它抛出一个错误并停止应用程序。