ASP.NET 4.0 маршрутизация + ajax + история браузера - PullRequest
0 голосов
/ 16 июня 2010

Проблема с маршрутизацией 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") будетreturn false

Причина, по которой я хочу использовать эту функцию, заключается в том, что я использую JavaScript и Ajax, чтобы скрыть некоторый контент и загрузить новый, что в глазах пользователя похоже на загрузку другой страницы, ион должен быть в состоянии скопировать, вставить URL и просмотреть эту страницу позже.

Вопрос: как получить {idDesign} из RoutedData?

1 Ответ

2 голосов
/ 16 июня 2010

Браузеры не отправляют данные после # в URL-адресах на сервер; в результате ASP.Net не сможет получить эти данные и предоставить их вам.

Я бы порекомендовал использовать ? вместо #, чтобы получить необходимую вам функциональность, и включить вызов AJAX для захвата данных, помещенных в хеш-часть URL-адреса, для отправки на сервер, при необходимости, для URL, созданные в AJAX.

Использование jQuery:

$(function () {
    if (location.hash) {
        hash = location.hash.substr(1);
        location.hash = null;
        location.search = hash;
    }
});
...