ASP.NET 4.0 路由的问题是 Page.RouteData.Values 不包含链接中 #
字符后的参数
System.Web.Routing.RouteTable.Routes.MapPageRoute("ProjectViewRoute1",
"project/{title}/{idProject}#{idDesign}", "~/ProjectView.aspx");
正如我所说,Page.RouteData.Values.ContainsKey("idDesign")
将返回 false
我想使用这个功能的原因是因为我使用 JavaScript 和 Ajax 来隐藏一些内容并加载新内容,在用户眼中就像加载不同的页面一样,他必须能够复制粘贴URL 并稍后查看该页面。
问题是:如何从 RoutedData 中获取 {idDesign}
?
最佳答案
浏览器不会在 URL 中的 #
之后向服务器发送数据;因此,ASP.Net 无法捕获该数据并将其提供给您。
我建议使用 ?
而不是 #
来获得所需的功能,并包含一个 AJAX 调用以捕获放置在 url 哈希部分中的数据如有必要,将 AJAX 创建的 url 发送到服务器。
使用 jQuery:
$(function () {
if (location.hash) {
hash = location.hash.substr(1);
location.hash = null;
location.search = hash;
}
});
关于ajax - ASP.NET 4.0 路由 + ajax + 浏览器历史记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3053918/