3

我添加了这样的自定义路线

        routes.MapRoute(
          name: "Default",
          url: "{coutry}/{lang}/{controller}/{action}",
          defaults: new { controller = "Home", action = "Index" }
        );

现在当我尝试从一个控制器调用方法时遇到一些问题,这在添加新路由之前运行良好

<a id="someId" class="link-button" href="../Documents/Create"><span>Create</span></a>

现在我能做到这一点的唯一方法是使用类似的东西href="EN/us/Documents/Create"

有没有办法为我的客户端保留自定义路由,并且仍然href="../Documents/Create">为我的管理端保留路径,这是因为我在管理端开发了几个功能,但现在我必须为客户端包含该自定义路由。太感谢了。

现在有我的路线

 routes.MapRoute(
          name: "Default",
          url: "{controller}/{action}/{id}",
          defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
      );

routes.MapRoute(
            name: "CustomRoute",
            url: "{country}/{lang}/{controller}/{action}",
            defaults: new { controller = "Test", action = "Index" }
        );

但我只能使用 /ES/es/Test/Index 访问 CustomRoute ...为什么不采用默认值?

4

2 回答 2

2

您只需要在默认路由之后声明您的自定义路由:

routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new { controller = "Home", action = "Index",
        id = UrlParameter.Optional }
);
// SomeOther = someothercontroller
routes.MapRoute(
    name: "CustomRoute",
    url: "{coutry}/{lang}/{controller}/{action}",
    defaults: new { controller = "SomeOther", action = "Index" }
);
于 2013-04-17T03:48:17.030 回答
1

您已将默认 RouteConfig 替换为新配置,并且它确实匹配{coutry}/{lang}/{controller}/{action}格式的 Url。

如果要接受../Documents/CreateURL,则必须在末尾添加默认 RouteConfig。

routes.MapRoute(
  name: "CustomRoute",
  url: "{coutry}/{lang}/{controller}/{action}",
  defaults: new { controller = "Documents", action = "Index" }
);

routes.MapRoute(
  name: "Default",
  url: "{controller}/{action}/{id}",
  defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

同样在锚标记<a id="someId" class="link-button" href="../Documents/Create"><span>Create</span></a>而不是硬编码中,href您可以编写如下内容。

<a id="someId" class="link-button" href="@Url.Action("Create","Documents")><span>Create</span></a>

于 2013-04-17T03:52:25.487 回答