UrlEncode идентификаторов ссылок с методами расширения ASP.NET MVC HtmlHelper - PullRequest
1 голос
/ 02 января 2009

У меня есть действия, которые принимают параметры идентификатора строки, основанные на имени пользователя, которое может включать символы, требующие кодирования, например, «user? 1»

Если я использую ActionLink() для генерации ссылок, передавая строку без кодировки, она генерирует ссылку, подобную этой: http:\\localhost\controller\action\user?1, и действие передается "user" в качестве идентификатора.

Если я передаю UrlEncode() строку перед тем, как передать ее ActionLink, тогда будет сгенерирована ссылка: http:\\localhost\controller\action\user%253f1, поскольку ActionLink закодирует для вас символ «%». Помимо того, что это выглядит ужасно, он также генерирует HTTP-ошибку 400 - неверный запрос при переходе по ссылке, причина которой я еще не выяснил.

Есть ли способ, с помощью которого я могу генерировать URL, например: http:\\localhost\controller\action\user%3f1?

Ответы [ 3 ]

0 голосов
/ 21 февраля 2010

Вы должны посмотреть в файле Global.asax.cs

добавьте другой маршрут для вашего удобства, в данном случае, ff. может работать:

        routes.MapRoute(
             null,                            
             "{controller}/{action}/user/{id}",
             new { controller = "Home", action = "Index" }
         );

Полагаю, это то, что вы хотите, чтобы разделить действие для каждого пользователя, но я предлагаю вам использовать cookie для этой цели.

PS: не забудьте поставить его поверх вашего маршрута по умолчанию, так как при маршрутизации выполняется поиск сверху вниз.

0 голосов
/ 31 октября 2011

вы можете создать плагин jquery, который проверяет все ссылки и заменяет символ, который вам нужно заменить, новым значением. и после применения этого плагина ко всем ActionLinks

0 голосов
/ 30 января 2009

Как насчет удаления? символ или его замена на что-то еще, например, тире (-) или подчеркивание (_)?

...