Asp.net mvc 使用url.action时MVC路由问题
我有一个javascript文件,在我的视图中定义了以下url.actionAsp.net mvc 使用url.action时MVC路由问题,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,我有一个javascript文件,在我的视图中定义了以下url.action var Url = '@Url.Action("GetSomething", "SomeController", new { area = "", repository = Model.Repository, multiSelect = Model.MultiSelect })'; 在我的javascript中,我使用上面定义
var Url = '@Url.Action("GetSomething", "SomeController",
new {
area = "", repository = Model.Repository,
multiSelect = Model.MultiSelect })';
在我的javascript中,我使用上面定义的Url对象加载并获得以下Url
/EmployeeRepository/GetTree?multiSelect=True/1
My这会导致问题,因为url未正确映射到路由配置,路由配置为:
routes.MapRoute("HierarchyMultiSelect",
"{repository}/{action}/{id}/{multiSelect}",
new { controller = "SomeController",
id = UrlParameter.Optional,
multiSelect = UrlParameter.Optional },
new { repository = @"\w*Repository$" }, namespaces);
如果url为
/EmployeeRepository/GetTree/1/True
因此,我想知道如何从我的javascript中获取url的格式,该javascript目前执行以下操作:
staffTree.load(url + "/" + id, function () {}
使用参数使用路由数据还是在javascript中对url排序更好
提前感谢可能我错了,但您的操作结果未在路由中设置。在我看来,您应该在路线中添加
action=“GetTree”
语句:
routes.MapRoute(
name: "HierarchyMultiSelect",
url: "{repository}/{action}/{id}/{multiSelect}",
defaults: new { controller = "SomeController",
action = "GetTree",
id = UrlParameter.Optional,
multiSelect = UrlParameter.Optional },
new { repository = @"\w*Repository$" }, namespaces);
您的路线需要属性“ID”。您不能有两个可选参数,并期望能够为第二个参数指定值,但不能为第一个参数指定值。指定ID或创建没有ID的路由 您可以为ID添加一个占位符,如值“!!ID!!”,并在需要时使用Javascript替换该占位符。您还可以使用
Url.HtmlRoute(“HierarchyMultiSelect”)
强制执行特定路由,但仍需要在ID中合并