Маршруты ASP.NET MVC - domain.com/Events#!/12 к domain.com/Events/12 - PullRequest
2 голосов
/ 30 января 2011

Я обновляю несколько разделов на сайте с помощью Ajax, но сейчас я пытаюсь сделать что-то похожее на то, что делает Facebook.Когда я обновляю содержимое раздела, проблема в том, что мой URL остается прежним.Если я вижу пример на Facebook:

http://www.facebook.com/guilhermegeek#!/guilhermegeek?sk=photos

Эта ссылка отображается на: http://www.facebook.com/guilhermegeek?sk=photos

Я уже знаю, как использовать альтернативу для тех, у кого есть JavaScriptотключить: <a onclick="javascript:updatecontent(); return false;" href="">

Но я не знаю, как написать свои маршруты, как на примере Facebook.

Если я изменю свой URL на mydomain.com / News#! / Новости / 12 , как мне перевести это на mydomain.com / Новости / 12 ?

Спасибо

1 Ответ

3 голосов
/ 30 января 2011

Все, что следует за знаком # (hash, pund) URL-адреса: НИКОГДА не отправлено на сервер.Сервер видит только часть перед ним.Только javascript на стороне клиента может использовать и иметь смысл, используя window.location.hash.Так что, если вы хотите использовать что-то подобное в своем приложении, вы должны оставить маршрут по умолчанию как есть, а затем выполнить анализ JavaScript после части # и выполнить перенаправление на соответствующий URL.Вы можете иметь что-то вроде этого на своей странице:

var h = window.location.hash;
if (h != null) {
    var parts = window.location.href.split('#!/');
    if (parts.length > 1) {
        window.location.replace(parts[0] + '/' + parts[1]);
    }
}
...