我有一个使用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中执行此操作?我知道这个问题与引号有关。然而,我不确定如何克服它。
谢谢!
答案 0 :(得分: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("'","\\'"))';
请注意,此代码易受脚本注入攻击。