【问题标题】:Kendo MVC Razor Grid Custom Command does not have Action DefinitionKendo MVC Razor Grid 自定义命令没有动作定义
【发布时间】:2016-10-24 03:17:39
【问题描述】:

我是 Kendo 新手,正在尝试将自定义命令添加到网格中。 我一直在浏览示例页面、StackOverflow 和 Telerik 的网站,发现多个示例具有以下内容:

columns.Command(command =>
{ 
     command.Custom("Details").Text("Show Details").Action("Details", "Billing"); 
});

当我尝试使用它时,我收到以下错误:

'GridCustomActionCommandBuilder' 不包含 'Action' 的定义和最佳扩展方法重载 'UrlHelperExtensions.Action(IUrlHelper, string, object)' 需要一个 'IUrlHelper' 类型的接收者

然后我从telerik尝试了这个例子:

columns.Template(@<text>@Html.ActionLink("Edit", "Home", new { id = item.ProductID })</text>);

但是得到这个错误:

无法将 lambda 表达式转换为类型“字符串”,因为它不是 委托类型

只是为了确认导致错误的原因,然后取出 ActionLink 并仅使用此:

columns.Template(@<text>
    <div>help me!!</div>
</text>);

得到了同样的错误:

sn-p总代码如下:

@(Html.Kendo().Grid<OrganisationEmployeesViewModel>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(p => p.EmployeeID).Visible(false);
        columns.Template(@<text>
                            <div>help me!!</div>
                        </text>);
    })

    .Pageable()
    .Sortable()
    .Scrollable()
    .Filterable()
    .HtmlAttributes(new { style = "height:550px;" })
    .DataSource(dataSource => dataSource
        .Ajax()
        .PageSize(20)
        .Read(read => read.Action("Employees_Read",  "Organisations"))
     )
     .Deferred()
)

我正在使用现有的示例,但不知道出了什么问题。

【问题讨论】:

  • 您是否在视图(可能是布局视图)中包含了所有必要的剑道脚本引用?
  • @counterflux 如上所述,我是剑道新手。我的 _Layout.cshtml 文件中有对 kendo.aspnetmvc.min.js 和 kendo.all.min.js 的引用。我需要添加更多引用吗?如何添加它们?
  • 我有一个捆绑包:~/Content/kendo/2016.1.226/kendo.common.min.css ~/Content/kendo/2016.1.226/kendo.mobile.all.min.css ~/Content/kendo/2016.1.226/kendo.dataviz.min.css ~/Content/kendo/2016.1.226/kendo.flat.min.css ~/Content/kendo/2016.1.226/kendo.dataviz.flat.min.css ~/Scripts/kendo/2016.1.226/jquery.min.js ~/Scripts/kendo/2016.1.226/jszip.min.js ~/Scripts/kendo/2016.1.226/kendo.all.min.js 我用于我的应用程序。您的代码似乎没有给我错误。也不要忘记在 nuget 包管理器中添加 JQUERY。
  • Action 在 Razor 中调用,它是从 C#(服务器端 DLL)调用的,因此与未加载的 Javascript 无关。我已经尝试过这个,但仍然有同样的错误。 command.Custom("Details").Text("Show Details").**Action**("Details", "Billing");
  • 你试过.Action("Details", "Billing")而不是.Click("Details", "Billing")吗?

标签: razor kendo-ui asp.net-mvc-5 kendo-grid kendo-asp.net-mvc


【解决方案1】:

我找到了一种方法:

        columns.Template("<a href='" +
            Url.Action("ControllerAction", "Controller") +
            "?Parameter=#= RecID #'" +
        ">DisplayText</a>");

这也可以像这样应用于绑定列:

        columns.Bound(p => p.Name).ClientTemplate("<a href = '" +
            Url.Action("Details", "Employees") +
            "/#= EmployeeID #'" +
        ">#=Name#</a>");

如果您想在 Kendo Grid 上使用自定义工具栏操作: 我正在使用标准引导类来应用默认值:

    .ToolBar(t => t.ClientTemplate("<a class='k-button k-button-icontext k-grid-add' href='" +
            Url.Action("OrganisationCreate", "Employees", new { OrganisationId = Model.OrganisationID }) +
            "'><span class='k-icon k-add'></span>Add new Employee</a>") )

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 2012-11-02
    • 2013-08-06
    • 2012-08-11
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多