0

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 和稍后查看该页面。

问题是:如何{idDesign}从 RoutedData 获取?

4

1 回答 1

2

浏览器不会#在 URL 之后向服务器发送数据;因此,ASP.Net 无法捕获该数据并将其提供给您。

我建议使用 a?而不是 your#来获得所需的功能,并包含一个 AJAX 调用来捕获放置在 url 的哈希部分中的数据,以便在必要时发送到服务器,用于 AJAX 创建的 url。

使用 jQuery:

$(function () {
    if (location.hash) {
        hash = location.hash.substr(1);
        location.hash = null;
        location.search = hash;
    }
});
于 2010-06-16T14:06:06.090 回答