ajax - ASP.NET 4.0 路由 + ajax + 浏览器历史记录

标签 ajax seo url-routing asp.net-4.0 browser-history

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/

相关文章:

.htaccess - Magento .htaccess

google-app-engine - 带有 Golang : How do you parse URL path segments as variables? 的 Google App Engine

javascript - 有没有更好的方法来创建不使用 setInterval 的异步更新?

javascript - 数组排序的最佳实践,PHP 还是 Javascript?

php - 我应该使用哪个第三方搜索引擎(免费)?

node.js - 使用普通 Express.js 的分层路由

yii2路由-传递参数以在规则中进行路由

javascript - 无法在javascript中显示以前隐藏的图像

javascript - Ajax 函数在重定向后不保存滚动位置

search - 尽管网站管理员工具中有规则,谷歌搜索中的域无效