#asp.net-mvc-2 #asp.net-mvc-routing
#asp.net-mvc-2 #asp.net-mvc-routing
Вопрос:
Я создаю движок блога внутри приложения MVC2.
URL-адрес для каждого сообщения содержит заголовок URL-адреса. Когда заголовок содержит вопросительный знак, вопросительный знак вполне естественно появляется в URL-адресе, но когда запрос поступает на контроллер, вопросительный знак удаляется.
Предположительно, это некоторая мера безопасности, но в данной ситуации это вызывает проблему.
Кто-нибудь может сказать мне, как обойти это?
Формат URL-адреса
http://www.mydomain.com/posts/title-with-question-mark?/
Комментарии:
1. Вот как работают строки запросов.
2. Здесь нет строки запроса. Я обновил сообщение, чтобы показать формат URL. Я могу понять, что вопросительный знак будет отображаться в механизме маршрутизации как начало пустой строки запроса, но это не так, и нет ли способа включить вопросительный знак?
3. Задействована строка запроса… вы просто не осознаете этого. Вот что вызывает вопросительный знак.
4. Короткий ответ — нет. Нет способа сделать ваш URL-адрес похожим на этот. Знак вопроса является специальным символом и не может использоваться ни для чего другого.
Ответ №1:
Знак вопроса обозначает начало строки запроса и не является частью пути.
Вам нужно закодировать его по URL.
Комментарии:
1. Даже когда я заменяю знак вопроса на amp; # 63; MVC изменяет это на простое текстовое «?» в разметке.
2. Хорошо, сервер. UrlPathEncode не распознается, но я могу использовать HttpUtility. UrlPathEncode() — на самом деле я уже использовал это. К сожалению, это ничего не делает с вопросительным знаком с точки зрения кодирования. Тем не менее, я также попробовал HttpUtility. UrlEncode(), который кодирует вопросительный знак, но если я затем нажму на ссылку, я получу «Потенциально опасный запрос». Значение пути было обнаружено от клиента (?) «.