在ASP.NET MVC URL路由中包含哈希值

时间:2011-04-06 14:09:42

标签: asp.net-mvc routes

我需要实现哈希值,即Url应如下所示:

  

/家庭/索引/#创建

为此添加了一条路线:

routes.MapRoute(
    "Default",    // Route name
    "{controller}/{action}/#{detail}",    // URL with parameters
    new { controller = "Login", action = "LogIn",  detail  =""}  // Parameter defaults
);

访问/home/index/#create时,它会将我重定向到默认路由。

如何做到这一点?

4 个答案:

答案 0 :(得分:107)

如上所述,使用路由无法做到这一点。唯一可行的解​​决方案是在控制器的操作中重定向时将#片段附加到您的URL。例如

return Redirect(Url.Action("Index", "Home") + "#create");

答案 1 :(得分:51)

您无法在服务器上的#符号后面获取值,因为此值永远不会发送到服务器。只有客户端javascript可以访问这个,所以定义带有哈希的路由没有多大意义。

答案 2 :(得分:7)

当浏览器发出URL请求时,它不会在散列后向服务器发送任何内容。此路由可以使您生成包含哈希值的路由URL,但是当用户导航到此类URL时,无法执行任何操作服务器端。这就是网络的运作方式......

答案 3 :(得分:0)

OAuth 2.0隐式流

如果这与OAuth 2.0 Implicit Flow有关,则应改用Authorization Code Grant