在Razor

时间:2016-01-02 19:04:37

标签: javascript asp.net-mvc razor

我设法让以下内容正确执行,这意味着我已正确设置了renering等。我确实看到了警报窗口。

@{ Layout = "~/Views/Shared/_Default.cshtml"; }
<h1>Eye candies</h1>

@section Footie
{
  <script type="text/javascript">
    alert("Ola!");
  </script>
}

然而,当我改变它以执行不同的脚本,显示一个访客的酷球时,我什么也看不见,nada,ziltch!没有错误,没有任何错误。只是空白页面。

当我将URL粘贴到浏览器中时,我得到了一个JS源代码,所以我假设这个部分有效。但我没有想法如何进一步调查它。

@section Footie
{
  <script src="@Url.Content("//ra.revolvermaps.com/0/0/5.js?i=0w5jyvctga6&amp;m=0&amp;s=180&amp;c=ff0000&amp;cr1=ffffff")"
          async="async"
          type="text/javascript"></script>
}

我添加了一个静态HTML页面并粘贴在那里的脚本中。奇迹般有效!所以它肯定与MVC(或可能的Razor语法)视图下的脚本执行有关。

建议?

1 个答案:

答案 0 :(得分:1)

查看您传递给Url.Content方法的网址

@Url.Content("//ra.revolvermaps.com/0/0/5.js?i=0w5jyvctga6&amp;m=0&amp;s=180
                                                            &amp;c=ff0000&amp;cr1=ffffff")

在网址中,&已经编码为&amp; Url.Content方法将再次对&进行编码,您将获得结果

"//ra.revolvermaps.com/0/0/5.js?i=0w5jyvctga6&amp;amp;m=0&amp;amp;s=180&amp;amp;
                                                              c=ff0000&amp;amp;cr1=ffffff"

现在你有&amp;amp;:)

解决方案是不使用Url.Content()方法

<script type="text/javascript" src="//ra.revolvermaps.com/0/0/5.js?i=0w5jyvctga6&amp;
                        m=0&amp;s=180&amp;c=ff0000&amp;cr1=ffffff" async="async"></script>

或者不对传递给Url.Content()方法的网址进行编码,让方法对其进行编码。

<script type="text/javascript" src="@Url.Content("//ra.revolvermaps.com/0/0/5.js
               ?i=0w5jyvctga6&m=0&s=180&amp;c=ff0000&cr1=ffffff")" async="async"></script>