在ASP.NET MVC应用程序中解码URL参数值

时间:2014-12-15 13:24:01

标签: c# asp.net-mvc

我有一个使用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中执行此操作?我知道这个问题与引号有关。然而,我不确定如何克服它。

谢谢!

1 个答案:

答案 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("'","\\'"))';

请注意,此代码易受脚本注入攻击。