使用Razor的JavaScript中的撇号问题

时间:2014-03-26 14:01:16

标签: javascript jquery asp.net-mvc razor fancybox-2

这很简单!

这是我的动态JavaScript代码Razor标记:

<script type="text/javascript">
  $.fancybox.open(
    [
        @foreach (var class in GenericClass)
        {
            var aux = "{ href: 'http://localhost:63095" + Url.RouteUrl("Image") + "' }";
            <Text>@aux</text>
            break;
        }
    ],
    { helpers: { thumbs: { width: 75, height: 50 } }
  });    
</script>

这是我在任何网络浏览器中得到的结果:

<script type="text/javascript">
  $.fancybox.open(
    [
        { href: &#39;http://localhost:63095/Home/Image&#39; }
    ],
    { helpers: { thumbs: { width: 75, height: 50 } }
  });    
</script>

但这是我真正希望产生的:

<script type="text/javascript">
  $.fancybox.open(
    [
        { href: 'http://localhost:63095/Home/Image' }
    ],
    { helpers: { thumbs: { width: 75, height: 50 } }
  });    
</script>

问题很明显:输出 apostrophe (') ,而不是 &#39; 。有人知道如何生成 ' 而不是 &#39; 吗?

观察:我已尝试进行转义和编码,但似乎都没有效果。

1 个答案:

答案 0 :(得分:2)

也许尝试包含内联值:

@foreach (var class in GenericClass)
{
  <Text>{ href: 'http://localhost:63095@(Url.RouteUrl("Image"))' }</text>
  break;
}

我认为应该解决问题


原始Html方法

如果您确实需要原始html,可以使用以下内容:

@Html.Raw(myString)

请特别注意,尤其是如果您要包含用户输入的值,因为它可能会导致XSS或其他安全问题。