asp.net-mvc - 自定义命令 Kendo UI MVC 5 - 错误服务器绑定(bind)

标签 asp.net-mvc entity-framework kendo-ui kendo-grid

我尝试根据 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/

相关文章:

c# - 在 WCF 数据服务中公开实体的其他属性

telerik - 向网格添加行时使用 ASP.NET MVC3 默认值的 Kendo UI

c# - Razor View - @if 语句编译错误

javascript - 通过按钮和 JavaScript 下载文件

c# - 当连接条件类似时如何在 EF 中进行连接

c# - Lambda 表达式搜索

c# - 从 HttpResponseMessage 返回的 JSON 中获取 API 值

javascript - 如何在 MVC 5 Razor 中调用和刷新局部 View ?

kendo-ui - 粘贴到 KendoUI 编辑器时,如何从文本中删除所有 html 格式?

javascript - 为什么文档就绪不适用于剑道控件