首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MapRoute未按预期工作

MapRoute未按预期工作
EN

Stack Overflow用户
提问于 2015-07-16 15:40:03
回答 1查看 102关注 0票数 0

考虑到下面映射的路由,当用户转到/Home时,为什么第二条路由会击中而不是第一条呢?我的假设是,去/Home将导致第一条路线被击中,但出于某种原因,第二条正在被使用。

为什么会这样呢?

代码语言:javascript
复制
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.MapRoute(
          "Home page behind auth",
          "Home",
          new { controller = "Home", action = "HomeSecure", id = "" }
        );

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

编辑:为了清楚起见,我希望/Home转到主控制器中的HomeSecure操作。

edit2:

代码语言:javascript
复制
        public ActionResult Index()
        {
            return View();
        }

        [AuthorizeHasAccess]
        public ActionResult HomeSecure()
        {
            return View();
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-16 16:02:18

考虑到您所提供的信息,我认为这两条路线都不符合要求。MVC将寻找带有"id“参数的方法签名,而您的操作方法没有。如果请求确实带您到Home控制器上的Index方法,请检查某个错误处理程序是否捕获了该条件,然后将您重定向到/Home/Index

如果按以下方式设置路由表,则第一条路由将按需要匹配。

代码语言:javascript
复制
public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute(
      name: "Home page behind eRaider",
      url: "Home",
      defaults: new { controller = "Home", action = "HomeSecure" }
    );

    routes.MapRoute(
      name: "Default",                                              
      url: "{controller}/{action}/{id}",                           
      defaults: new { controller = "Home", action = "Index", UrlParameter.Optional } 
    );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31458728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档