0

我有以下网址

  1. 网址/说明
  2. URL/首页/会员/说明
  3. 网址/主页/说明

这是我的路线

对于上面的#1:

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

对于上面的#2:

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

我在使用#3 时遇到了麻烦。

我以为我能做到

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

但这会造成无限循环。基本上我希望#3 示例将“home/description”映射到 Home Controller 和 Index 操作。帮助将不胜感激!

4

1 回答 1

0

您的问题是场景 3 将与 Route config 2 匹配,因为它会认为描述是操作,而您没有 {d} 部分。

解决此问题的唯一方法是制定非常具体的路线,并且您需要在方案 2 之前满足方案 3。

您应该添加的最后一条路线是这条路线,这是您的全部。

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

您的问题不清楚的是您的 url 的描述部分是占位符还是文字值。如果是字面的,那么在你的路由配置中使用它。

于 2012-07-13T16:30:37.643 回答