MVC2:需要路由包含#符号的URL

时间:2011-01-11 18:02:45

标签: asp.net-mvc asp.net-mvc-2

我正在寻找一种正确路由包含“#”符号的网址的方法。对于这样的网址,我基本上想忽略#。

例如,我希望Stores / Index /#/ {storeName}路由到Store控制器的Index操作,传递单个参数(storeName)。

我尝试在字符串中匹配文字“#”,但这不起作用。 (调用该操作但未传递storeName参数)

routes.MapRoute("RemoveHash", "Store/Index/#/{storeName}",
            new {controller = "Store", action = "Index", storeName = UrlParameter.Optional});

我还尝试了2个参数来执行操作(第一个是#),认为我可以忽略#如果它被传递(我知道hacky)......但是这里的路由出了问题case并且都没有参数传递给操作。

如果我能使用理想的MVC路由系统来处理这个问题,我想避免使用HttpHandler来完成这项任务。

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

你要做的事是不可能的。当浏览器向服务器发送请求时,完全忽略URL中#(哈希)符号后面的所有内容,因此您的ASP.NET MVC应用程序永远无法获得此值。只有客户端javascript可以读取此值(使用window.location.hash),并可以使用AJAX请求和普通URL(例如:Store/Index/{storeName})将其传递给服务器。