Ладно, я знаю, что этому вопросу несколько дней, но я не был уверен, разобрали ли вы эту проблему или нет, поэтому я посмотрел.Я поэкспериментировал с этим некоторое время, и вот в чем проблема, и как вы можете ее решить.
Проблема, с которой вы сталкиваетесь, заключается в том, что специальные символы, вызывающие проблемы, являются одними из многих (я думаю, 20) специальные символы, такие как% и ".
В вашем примере проблема заключается в символе%. Как указано Priyank
здесь :
Значения маршрута публикуются как часть строки URL.
Строка URL (не параметр строки запроса) не может обрабатывать% (% 25), "(% 22) и т. Д.Далее, как указывает Lee Gunn
в том же посте: http://localhost:1423/Home/Testing/23/!%40%23%24%25%3f%26*%201 - (это взорвется)
Один из способов исправить это - удалить {MyString}
из отображения маршрута.,Чтобы ваше корневое отображение выглядело так:
routes.MapRoute(
"TestRoute",
"Home/Testing/{id}",
new { controller = "Home", action = "Testing", id = 0, MyString = UrlParameter.Optional }
);
Это заставит пост сгенерировать это:
http://localhost:1423/Home/Testing/23?MyString=!%2540%2523%2524%2525%2B1
Теперь, когда вы установите MyString
itбудет превращен в параметр строки запроса, который прекрасно работает. Я попробовал это, и это сработало.
Priyank
также упоминалось в посте SO, который я привел выше, что вы, возможно, можете решить эту проблему с помощью пользовательского ValueProvider
, но вам придетсяследуйте его связанной статье, чтобы проверить, относится ли это к вам.