ASP.net MVC параметры маршрутизации

1

У меня есть маршрут, который выглядит так:

http://localhost:1936/user/someOne/##feed%233dbfc1b3-44b4-42b4-9305-4822ac151527

Мои маршруты настроены следующим образом:

   routes.MapRoute("Profile", "user/{userName}/{treningId}",
            new { controller = "Profile", action = "Index", userName = UrlParameter.Optional, treningId = UrlParameter.Optional }
            );

И действие в моем контроллере:

public ActionResult Index(string username, string treningId)
    {
      //more code here
    }

Но я не могу получить эту часть: ##feed%233dbfc1b3-44b4-42b4-9305-4822ac151527, когда я отлаживал код, я видел, что treningId было null.

Мой вопрос: как я могу получить часть URL после ##?

Теги:
asp.net-mvc
asp.net-mvc-4

3 ответа

2
Лучший ответ

Вы не можете.

Браузер не отправляет материал после первого # на сервер (вы можете проверить это, используя отладчик в своем браузере, чтобы проверить трафик между вашим браузером и сервером). Это потому, что символ # (hash) имеет особое значение в HTTP.

Почему бы вам не просто

  • используйте обычные параметры запроса (так что-то вроде http://localhost:1936/user/someOne?myparameter=feed%233dbfc1b3-44b4-42b4-9305-4822ac151527) или, альтернативно,
  • выберите другой разделитель, чем "##".
3

Это невозможно, так как хеши не включены в запрос; они зарезервированы для использования на стороне клиента в URL-адресах (как правило, для указания определенного местоположения в/части документа).

У вас есть два варианта. Либо кодируйте хэш-символ как %23:

%23%23feed%233dbfc1b3-44b4-42b4-9305-4822ac151527

Или используйте другой символ/маршрут.

0

Как вы указали свой URL-адрес, браузер не будет передавать какую-либо часть идентификатора фрагмента - хэш-часть URL-адреса. Таким образом, ваше приложение MVC никогда не получит значение и, следовательно, всегда будет иметь значение null.

Чтобы сделать это значение доступным для MVC, избегайте # чтобы избежать маркировки начала фрагмента части URL.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню