2010-11-12 3 views
3

Использование стандартного шаблона маршрутаASP MVC ActionLink вызывает недопустимый URL

{controller}/{action}/{code} 

, а затем стандартный ActionLink на мой взгляд

<%: ActionLink("Details", "Details", new { code = item.Code }) %> 

Когда пользователь ввел "N/A" в качестве кода I см следующий URL

http://localhost/AbsenceCode/Details/N/A 

Когда я ожидал увидеть это

http://locahost/AbsenceCode/Details/N%2FA 

Кроме того, если у пользователя есть «A: B» в качестве кода, я вижу правильный URL (двоеточие является экранированным URL-адресом), но я получаю «400 плохой запрос» с сервера.

У кого-нибудь есть решения этих проблем? Я не могу заставить клиента использовать только безопасные URL-адреса.

ответ

0

Попробуйте

<%: Html.ActionLink("Details", "Details", new { code = Url.Encode(item.Code) }) &> 
+0

Forward слэш является допустимым URL характер, так он не будет убежали. Кроме того, кажется, что любые escape-символы% xx рассматриваются как плохие запросы ASP MVC –