【问题标题】:Matching routes with MVC Routing使用 MVC 路由匹配路由
【发布时间】:2012-07-13 12:16:48
【问题描述】:

我有以下网址

  1. 网址/说明
  2. 网址/主页/会员/说明
  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 操作。帮助将不胜感激!

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-mvc-routing


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-01
      • 1970-01-01
      • 2017-05-19
      • 2011-10-25
      • 2018-10-04
      • 1970-01-01
      • 2013-03-08
      • 1970-01-01
      相关资源
      最近更新 更多