Kendo MVC Helper“Route()”生成错误的URL

时间:2013-09-30 18:40:32

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

我正在尝试定义一个自定义Kendo网格工具栏命令,使用Kendo Route()MVC帮助器,如

@(Html.Kendo().Grid(Model.Imports)
.Name("ImportsGrid")
.ToolBar(tb => tb.Custom().Route("DataImportData", new { tableType = DataTablesTypeEnum.MyTables, id = Model.TableName }).Text("Import Data"))

但生成的URL不正确 - 它最终与包含网格的网页相同,这是一个无法以某种方式找不到路由的线索。

然而......当我像这样使用Url.RouteUrl()方法时

@{ var url = Url.RouteUrl("DataImportData", new { tableType = DataTablesTypeEnum.MyTables, id = Model.TableName });}
@(Html.Kendo().Grid(Model.Imports)
        .Name("ImportsGrid")
        .ToolBar(tb => tb.Custom().Url(url).Text("Import Data"))

生成正确的网址。

我的路线定义如下:

            routes.MapRoute(
            name: "DataImportData",
            url: "{controller}/{tableType}/{id}/Import",
            defaults: new { controller = "Data", action = "ImportData" },
            namespaces: new[] { "MyApp.MyNamespace" }
            );

这是剑道的一个已知问题,还是我做错了什么?

1 个答案:

答案 0 :(得分:0)

事实证明问题是因为操作被指定为默认值而不是参数。如果我在路径数据中包含Kendo Route()方法中的操作,则路由正确匹配。

.ToolBar(tb => tb.Custom().Route("DataImportData", new { action="ImportData", tableType = DataTableTypeEnum.MyTables, id = Model.TableName }).Text("Import Data"))

我还发现,至少在这种情况下,我可以简单地使用Action方法并直接指定动作(“ImportData”),如

.ToolBar(tb => tb.Custom().Action("ImportData", "Data", new { tableType = DataTableTypeEnum.MyTables, id = Model.TableName }).Text("Import Data"))

并且路线与预期的网址正确匹配。