在RouteConfig中重定向到包含HTML Anchor的页面

时间:2014-03-13 17:51:41

标签: c# asp.net asp.net-mvc asp.net-mvc-4 redirect

我正在使用.Net Framework 4.5和MVC4与实体框架。

我目前在RouteConfig.cs中有以下代码:

routes.MapRoute(
    name: "Jobs",
    url: "job_openings.aspx",
    defaults: new { controller = "AboutUs", action = "Index", id = UrlParameter.Optional }
);

但我们现在在“关于我们”页面中有一个页面锚点。当用户键入/job_openings.aspx时,我希望将它们直接放到该锚点。有谁知道怎么做?

我尝试过做MapPageRoute,但这似乎不起作用:

routes.MapPageRoute("Jobs", "job_opening.aspx", "~/AboutUs#News");

这是我想要访问的网址:〜/ AboutUs#News 来自这个: job_opening.aspx

这可能吗?

1 个答案:

答案 0 :(得分:0)

首先感谢这篇精彩的帖子:ASP.NET MVC Redirect to action with anchor

我实际上能够让这个工作......但我必须做一些......唠叨。

在Route配置中,我添加了id 1,因此我可以在控制器中处理它:

routes.MapRoute(
               name: "Jobs",
               url: "job_openings.aspx",
               defaults: new { controller = "AboutUs", action = "Index", id = 1 }
           );

这是我在我的控制器中处理此请求所做的事情(使用一页提供的内容):

public ActionResult Index(int id = 0)
        {
            if (id == 1)
            {
                return Redirect(Url.RouteUrl(new { controller = "AboutUs", action = "Index" }) + "#News");
            }
            return View();
        }

现在,这是一个棘手的部分,我不得不狠狠地打了一会儿。出于某种原因,在重定向上,它实际上转到了路由配置并获取了第一个项目 controller =" AboutUs",action =" Index" 和去了。所以我处于无限循环中。

所以我添加了这个"乔布斯"路线:

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

一旦我这样做,它确实有效!