Включение хеш-значений в URL-маршруты ASP.NET MVC - PullRequest
53 голосов
/ 06 апреля 2011

Мне нужно реализовать хэш-значение, т.е. URL должен выглядеть следующим образом:

/ home / index / # create

Для этого добавили маршрут:

routes.MapRoute(
    "Default",    // Route name
    "{controller}/{action}/#{detail}",    // URL with parameters
    new { controller = "Login", action = "LogIn",  detail  =""}  // Parameter defaults
);

При доступе к /home/index/#create он перенаправляет меня на маршрут по умолчанию.

Как это можно сделать?

Ответы [ 3 ]

107 голосов
/ 06 апреля 2011

Как уже говорилось, нет способа сделать это с помощью маршрутизации.Единственное возможное решение - добавить фрагмент # к вашему URL при перенаправлении в действиях вашего контроллера.Например,

return Redirect(Url.Action("Index", "Home") + "#create");
51 голосов
/ 06 апреля 2011

Вы не можете получить значение после символа # на сервере просто потому, что это значение никогда не отправляется на сервер. Только клиентский javascript имеет доступ к этому, поэтому определение маршрутов с помощью хэша не имеет особого смысла.

7 голосов
/ 06 апреля 2011

Когда браузер запрашивает URL-адрес, он ничего не отправляет после хэширования на сервер.Этот маршрут может позволить вам генерировать URL-адреса маршрута, содержащие значение хеш-функции, но невозможно что-либо сделать на стороне сервера , когда пользователь переходит на такой URL.Так работает Интернет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...