Приложение MVC2, изменяющее параметры обратной публикации

#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(), который кодирует вопросительный знак, но если я затем нажму на ссылку, я получу «Потенциально опасный запрос». Значение пути было обнаружено от клиента (?) «.