Kendo ui 剑道MVC助手“;路由();生成错误的URL
我正在尝试定义一个自定义剑道网格工具栏命令,使用剑道路由()MVC帮助程序,如中所示Kendo ui 剑道MVC助手“;路由();生成错误的URL,kendo-ui,kendo-grid,kendo-asp.net-mvc,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我正在尝试定义一个自定义剑道网格工具栏命令,使用剑道路由()MVC帮助程序,如中所示 @(Html.Kendo().Grid(Model.Imports) .Name("ImportsGrid") .ToolBar(tb => tb.Custom().Route("DataImportData", new { tableType = DataTablesTypeEnum.MyTables, id = Model.TableName }).Text("Import Data")) 但是生成
@(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相同,这表明它无法以某种方式找到路由
然而。。。当我像这样使用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"))
生成了正确的URL
我的路线定义如下:
routes.MapRoute(
name: "DataImportData",
url: "{controller}/{tableType}/{id}/Import",
defaults: new { controller = "Data", action = "ImportData" },
namespaces: new[] { "MyApp.MyNamespace" }
);
这是剑道的已知问题还是我做错了什么?事实证明,问题在于动作被指定为默认动作,而不是参数。如果我使用Kendo route()方法在路由数据中包含该操作,则该路由是正确匹配的
.ToolBar(tb => tb.Custom().Route("DataImportData", new { action="ImportData", tableType = DataTableTypeEnum.MyTables, id = Model.TableName }).Text("Import Data"))
我还发现,至少在本例中,我可以简单地使用Action方法并直接指定Action(“ImportData”),如中所示
.ToolBar(tb => tb.Custom().Action("ImportData", "Data", new { tableType = DataTableTypeEnum.MyTables, id = Model.TableName }).Text("Import Data"))
并且路由与预期URL正确匹配