我尝试根据 KENDO 示例在网格上添加按钮详细信息,并且执行时会抛出错误: 自定义命令路由仅适用于服务器绑定(bind)。
这是我的观点和 Controller 。
@(Html.Kendo().Grid<PedidosOnline.Models.Proveedor>()
.Name("Proveedores")
.Selectable()
.Columns(columns =>
{
columns.Bound(c => c.ID);
columns.Bound(c => c.sRazonSocial);
columns.Bound(c => c.sCodigoTrib);
columns.Bound(c => c.sDireccion);
columns.Bound(c => c.sTelefono);
columns.Bound(c => c.sEmail);
columns.Bound(c => c.bActivo);
columns.Command(command =>
{
command.Edit();
command.Destroy();
// Declare a custom command named "showDetails"
command.Custom("showDetails")
.Text("Show details")
.Action("ShowDetails", "Proveedores")
.DataRouteValues(route =>
{
route.Add(o => o.ID).RouteKey("ID");
});
}).Width(200);
})
.DataSource(datasourse => datasourse
.Ajax()
.Events(events => events.Error("errorHandler"))
.Model(model =>
{
model.Id(prov => prov.ID);
model.Field(prov => prov.ID).Editable(false);
})
.Read(read => read.Action("GetAllProveedores", "Proveedores"))
.Update(update => update.Action("UpdateProveedores","Proveedores"))
.Create(create => create.Action("CreatePorveedores","Proveedores"))
.Destroy(destory=> destory.Action("DeleteProveedores","Proveedores"))
)
.ToolBar(toolbar => toolbar.Create())
.ToolBar(tools => tools.Excel())
.ToolBar(tools => tools.Pdf())
.Editable(editable => editable.Mode(GridEditMode.InLine))
//.Editable(editable => editable.Mode(GridEditMode.InCell))
//.Editable(editable => editable.Mode(GridEditMode.PopUp))
.Sortable()
.Selectable(selectable => selectable
.Mode(GridSelectionMode.Multiple)
//.Type(GridSelectionType.Cell)
)
)
--------- Controller ------------
public ActionResult Index()
{
return View();
}
public ActionResult GetAllProveedores([DataSourceRequest] DataSourceRequest request)
{
try
{
//var query = db.Proveedores.Select(p => new { ID = p.ID, sRazonSocial = p.sRazonSocial });
var query = from p in db.Proveedores
select new
{
ID = p.ID,
sRazonSocial = p.sRazonSocial
};
return Json(query.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
//throw;
return Json(ex.Message);
}
}
public ActionResult ShowDetails(int ID)
{
var detalles = db.Proveedores.FirstOrDefault(o => o.ID == ID);
return View(detalles);
}
最佳答案
正如消息所描述的,操作命令仅适用于服务器绑定(bind)。如果您想在使用 Ajax 绑定(bind)时创建一个指向不同 View 的按钮,您可以使用内部带有超链接的模板列。
columns.Template(@<text></text>).ClientTemplate("<a href='"+Url.Action("ShowDetails","Proveedores")+"/#=ID#'>Show details</a>");
关于asp.net-mvc - 自定义命令 Kendo UI MVC 5 - 错误服务器绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39310117/