在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的工作方式…