我正在使用.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
这可能吗?
答案 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 }
);
一旦我这样做,它确实有效!