我有一个自定义的mvc路由,它不起作用。如果我在归属路线之前定义路线,那么它将正常工作。
此代码不起作用。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"Citysearch",
"{state}",
new { controller = "Dashboard", action = "GetDynamicContent" }
);
当我首先定义citysearch
时,它的工作原理如下
routes.MapRoute(
"Citysearch",
"{state}",
new { controller = "Dashboard", action = "GetDynamicContent" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
另一个问题是,这是城市搜索http://localhost:51381/dynamic-content
的网址。 dynamic-content
这是我的状态参数。它正在呼叫我的Dashboard/GetDynamicContent
。但是问题是当登录网址为http://localhost:51381/Home
后运行应用程序时,它总是在调用Dashboard/GetDynamicContent
来解决这个问题,请帮帮我。
答案 0 :(得分:3)
从上至下读取路由。因此,路由时将使用第一个路由匹配。
尝试一下
routes.MapRoute(
"Home",
"Home/{action}",
new { controller = "Home", action = "index" }
);
routes.MapRoute(
"Citysearch",
"DynamicContent/{state}",
new { controller = "Dashboard", action = "GetDynamicContent" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
答案 1 :(得分:1)
您必须在网址中使用一些修复部分,如DynamicContent/
所示,以解决您面临的问题。并且您的网址应类似于http://localhost:51381/DynamicContent/dynamic-content
。
routes.MapRoute(
"Citysearch",
"DynamicContent/{state}",
new { controller = "Dashboard", action = "GetDynamicContent" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
答案 2 :(得分:0)
我想补充一下我在“custom-map-route is not working”这个问题上的经验。
Myobservation:自定义 url 路由在使用 href="redirected page" 重定向页面时不起作用。当我使用 @Url.Action() 进行重定向时,自定义路由开始工作。
这是我的初始代码(代码片段)