在ASP.NET MVC URL路由中包含散列值

我需要实现哈希值,即Url应该看起来像这样:

/家庭/索引/#创build

为此增加了一条路线:

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

在访问/home/index/#create ,它会将我redirect到默认路由。

如何才能做到这一点?

你不能在服务器上的#符号之后获取这个值,因为这个值永远不会被发送到服务器。 只有客户端的JavaScript有权访问这个,所以用hash定义路由没有多大意义。

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

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

当一个浏览器发出一个URL的请求时,它不会在散列之后向服务器发送任何东西。 这条路线可以让你生成包含散列值的路由URL,但当用户导航到这样的URL时,没有办法做任何服务器端的事情。 这只是networking的工作方式…