【问题标题】:How to map Home/Action/id to just action/id?如何将 Home/Action/id 映射到仅 action/id?
【发布时间】:2012-10-18 07:48:39
【问题描述】:

目前我刚刚定义了这条路线

 routes.MapRoute(
                "Default",                                                
                "{controller}/{action}/{id}",                           
                new { controller = "Home", action = "Index", id = "" } 
                );

我想将 /Home/Action1/id 映射到 /Action1/id 有人知道吗?

【问题讨论】:

    标签: asp.net-mvc routing


    【解决方案1】:

    您可能必须小心您要求的路线,因为它可能会捕获超出预期的数量。

    一种解决方法是尽可能使用约束来限制该路由。

    例如检查 id 是否为数字...

    routes.MapRoute("ActionRoute", 
             "{action}/{id}",
             new { controller = "Home", action = "Index", id="1" },
             new { id = @"\d{1,6}" }
    );
    

    这样,您仍然可以在最后指定通用默认路由,以便在需要时捕获站点上的其余路由。

    【讨论】:

      【解决方案2】:

      看这个问题How to Route /About to /Home/About

      这不是(完全)答案,但我认为它给了你相反的答案。

      【讨论】:

        【解决方案3】:
         routes.MapRoute(
                        "NewRoute",                                                
                        "{id}",                           
                        new { controller = "Home", action = "Index", id = "" } 
                        );
        

        尝试一下,只要您默认控制器和操作它应该可以工作。当生成与 Html.Action 链接时不要忘记使用新的路由名称。

        为我的 iPhone 上写的格式道歉

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-24
          相关资源
          最近更新 更多