Декодирование значений параметров URL в приложении ASP.NET MVC

1

У меня есть приложение, построенное с помощью ASP.NET MVC. Мои взгляды используют Razor. Один из моих взглядов - это использование URL-адреса, например:

http://localhost:5001/find?s=You%27re

Мне нужно получить удобную для пользователя версию параметра строки запроса s. Для этого в настоящее время в нижней части моего представления ASP.NET MVC есть следующее:

<script type="text/javascript">
  var s = '@HttpUtility.UrlDecode(Request.QueryString["s"])';
  alert(s);
</script>

Когда этот код будет выполнен, я могу просмотреть код в браузере, и я вижу следующее:

<script type="text/javascript">
  var s = 'You&#39;re';
  alert(s);
</script>

Я ожидал увидеть:

<script type="text/javascript">
  var s = "You're";
  alert(s);
</script>

Как это сделать в ASP.NET MVC? Я знаю, что проблема имеет какое-то отношение к цитатам. Тем не менее, я не уверен, как его преодолеть.

Спасибо!

  • 0
    Почему вы не можете передать это значение из контроллера?
  • 0
    человек, вы должны прочитать о маршрутизации MVC
Показать ещё 1 комментарий
Теги:
asp.net-mvc

1 ответ

0
Лучший ответ

По умолчанию Razor кодирует серверные строки. Чтобы отключить кодировку Html, инфраструктура предоставляет помощник Html.Raw.

http://msdn.microsoft.com/en-us/library/gg480740%28v=vs.118%29.aspx

var s = "@Html.Raw(Request.QueryString["s"])";

или обернуть с помощью одиночной кавычки и избежать одиночных кавычек:

var s = '@Html.Raw((Request.QueryString["s"] ?? String.Empty).Replace("'","\\'"))';

Имейте в виду, что этот код уязвим для инъекций скриптов.

  • 0
    Не могли бы вы добавить объяснение этому? Размещение строки кода не поможет тем, кто не понимает, как это работает.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню