自定义地图路线在asp.net mvc中不起作用

时间:2018-07-10 04:30:49

标签: c# asp.net-mvc

我有一个自定义的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来解决这个问题,请帮帮我。

3 个答案:

答案 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() 进行重定向时,自定义路由开始工作。

这是我的初始代码(代码片段)

return 'ViewForm';< /p>

我改成

var link = '@Url.Action("AuthorityForm", "Home", new { formid = ViewBag.formid, SubmittedFormId = "-1" })'; link = link.replace("-1", full.ConsentId); 返回 '​​ViewForm'

这可能会帮助某人..