MVC2 ASP.Net URLDecoding автоматически? - PullRequest
2 голосов
/ 30 июля 2010

Итак, я вызывал Controller в MVC2 вот так, и у меня был прекрасный доступ к классическим строкам запросов.Обратите внимание, что второй параметр thing2 уже URLEncoded и снова извлекает URLEncoded querystring, и URLDecoding не проблема.Мой пример выглядит следующим образом ...

http://mydomain.com/controller?thing1=1544&thing2=somethingURLEncoded

Теперь я пытаюсь перейти на MVC2 ASP.Net способ обработки параметров и создать себе собственный пользовательский MapRoute.Я проверяю его, чтобы убедиться, что он работает с простым тестом ...

http://mydomain.com/controller/Index/1544/999

Я успешно отлаживаю шаг VS2010 внутри моего метода Index внутри моего контроллера!

Затем я решаю сделать следующий шаг и изменить последний параметр URL на значение URLEncoded ...

http://mydomain.com/controller/Index/1544/somethingURLEncoded

Проблема, которую я вижу после выполнения этого в моембраузер в том, что он выглядит почти так, как будто MVC2 ASP.Net автоматически URL-декодирует это, прежде чем я войду в мой метод Index внутри моего контроллера.

Что дает?Я думал, что смогу сначала проникнуть внутрь своего контроллера, а во-вторых сделать собственный URL-код.Поскольку исходные данные были зашифрованы AES и имели прямую косую черту .., мой параметр преждевременно URLDecoding не является побочным эффектом, который я могу планировать.

Пожалуйста, помогите.

Ответы [ 3 ]

6 голосов
/ 30 июля 2010

Да, MVC автоматически URL-адрес декодирует параметры действия. Но вы все равно можете получить доступ к версии в кодировке URL через строку запроса.

1 голос
/ 31 июля 2010

Так что я сделал для кодирования Base64 вместо URLEncode мои зашифрованные данные AES в параметре действия.

0 голосов
/ 30 июля 2010

Поскольку ASP.NET MVC основан на движке ASP.NET (что неудивительно), правильно закодированные URL автоматически корректно декодируются URL, поэтому вам не нужно задавать вопросы.Просто:

public ActionResult Index(string q)
{
    // TODO : Use the q parameter here as is without ever caring of URL decoding it.
    // It's the caller of this action responsibility to properly URL encode his data
    return View();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...