Подтвердить что ты не робот

Получить полный URL запроса, включая параметры в контроллере

Как мне получить полный URL-адрес запроса (включая строку запроса) в моем контроллере? Это вопрос конкатенации моих параметров URL и формы или есть лучший способ.

Я проверил этот вопрос, но, похоже, он не применим к MVC.

Исправьте меня, если я ошибаюсь.

Дополнительная информация:

Мой вызов моего SearchController.AdvancedSearch() происходит из формы с примерно 15 необязательными параметрами. Из-за количества параметров и возможного пути (я думаю), чтобы иметь необязательные параметры, переданные чистым способом, я пошел на цепочку catchall, которая обрабатывается в контроллере.

Теперь я хочу, чтобы мой контроллер сохранял свой вызов в компоненте breadcrumb, так что, когда клик щелкает, можно получить точный результат (со всеми, но не более) из приведенных аргументов. Для этого мне нужен весь request.URL, включая запрос.

В Request.RawURL, request.URL и т.д. эта строка запроса не включена. Фактически в настоящее время я выполняю обычную функцию.

String.Format("{0}/{1}", request.Url, request.form)

Это дает мне некоторые странные результаты (например, значения кнопки отправки и т.д.), но это работает. Если есть предложения о том, как сделать это менее уродливым взломом, скажите, пожалуйста.

Я знаю, где найти текущий запрос, но, похоже, я не могу найти необработанный URL-адрес. Все они лишены ответа, и мне тоже нужен этот бит.

Мой контроллер обновляет коллекцию URL-адресов в моем компоненте BreadCrumb. Поэтому ему нужен URL-адрес запроса. Как вы предлагаете мне решить эту проблему?

4b9b3361

Ответ 1

Вы можете использовать Request.Url.PathAndQuery.

MVC5: используйте Request.RequestUri.PathAndQuery

Ответ 2

HttpContext.Current.Request.RawUrl
HttpContext.Current.Request.QueryString

Что касается второго вопроса. Вместо того, чтобы отслеживать информацию о URL-адресе, информацию о запросе и т.д., К которой пришел ваш пользователь. Отслеживайте вызовы контроллеров и действий. Это полностью устранит необходимость в объекте Request.

Ответ 3

Request.RawUrl

Используйте это свойство, чтобы вернуть все URL.

Ответ 4

Вы можете получить текущий объект запроса, используя:

HttpContext.Current.Request

Однако, я должен спросить - зачем вам URL-адрес запроса? Поступая таким образом, вы сделали свой контроллер зависимым от объекта Request, что сделает ваши тесты устройств более сложными для записи.

Ответ 5

Внутри контроллера вы можете получить доступ к Request.RawUrl.