У меня есть приложение, построенное с помощью 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're';
alert(s);
</script>
Я ожидал увидеть:
<script type="text/javascript">
var s = "You're";
alert(s);
</script>
Как это сделать в ASP.NET MVC? Я знаю, что проблема имеет какое-то отношение к цитатам. Тем не менее, я не уверен, как его преодолеть.
Спасибо!
По умолчанию 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("'","\\'"))';
Имейте в виду, что этот код уязвим для инъекций скриптов.