Я работаю со страницей, где у меня есть URL-адрес:
/Каталог/Компания/производитель
Используя некоторые правила перезаписи, это переписывается
тестирование с /directory/company/dunkin % 26donuts/
Некоторые производители имеют амперсанд на свое имя. Поэтому я подумал, что могу просто заменить амперсанд на %26
. Однако, когда я отлаживаю код и наведите указатель мыши на Request.QueryString
, он показывает мне {qq=company&manf=dunkin&donuts&cond=}
и Request.QueryString["manf"]
дает мне "dunkin"
Если я использую %24
($) вместо амперсанда, зависание над Request.QueryString
дает мне
{qs=company&manf=dunkin%24donuts&cond=}
и Request.QueryString["manf"]
дает мне "dunkin $donuts"
Я не понимаю здесь разного поведения. Почему кажется, что кодированное значение url для амперсанда декодируется до того, как вы действительно запросите конкретный ключ, но другой URL-код, как знак доллара, только расшифровывается после того, как вы действительно запросите этот конкретный ключ?
Это недавнее изменение? Я всегда думал, что Request.QueryString[key]
вернул фактический текст без его декодирования. Или это имеет какое-то отношение к перезаписи url?