我有一个javascript文件,在我的视图中定义了以下url.action
var Url = '@Url.Action("GetSomething", "SomeController",
new {
area = "", repository = Model.Repository,
multiSelect = Model.MultiSelect })';
在我的javascript中,我使用上面定义的Url对象加载并获取以下网址
/ EmployeeRepository / GetTree?MULTISELECT =真/ 1
我的这会导致一个问题,因为网址没有正确映射到路由配置:
routes.MapRoute("HierarchyMultiSelect",
"{repository}/{action}/{id}/{multiSelect}",
new { controller = "SomeController",
id = UrlParameter.Optional,
multiSelect = UrlParameter.Optional },
new { repository = @"\w*Repository$" }, namespaces);
如果网址为
,则有效/ EmployeeRepository / GetTree / 1 /真
所以我想知道如何从目前执行以下操作的javascript格式中获取网址:
staffTree.load(url + "/" + id, function () {}
使用参数使用路径数据或在javascript中对网址进行排序会更好吗?
提前致谢
答案 0 :(得分:0)
可能是我错了,但你的ActionResult没有在路由中设置。在我看来,你应该在你的路线上添加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);
答案 1 :(得分:0)
您的路线需要属性“ID”。您不能有两个可选参数,并且希望能够为第二个而不是第一个指定值。指定ID或创建没有ID的路由。
您可以为ID添加占位符,例如值“!! id !!”并根据需要使用Javascript替换它。您还可以使用Url.HtmlRoute("HierarchyMultiSelect")
强制执行特定路由,但仍需要合并ID。