ASP.NET MVC视图无法正确呈现脚本标记

时间:2013-09-25 18:11:30

标签: asp.net-mvc asp.net-mvc-4 razor razor-2

我有一个非常简单的MVC项目,在我的_Layout.cshtml中,我有一些js包含如下:

<script src="~/scripts/jquery-2.0.3.min.js"></script>
<script src="~/scripts/easing.js"></script>
<script src="~/scripts/bootstrap.js"></script>

然而,当它呈现时,它会在页面上呈现(注意第一个上的波浪号):

<script src="~/scripts/jquery-2.0.3.min.js"></script>
<script src="/scripts/easing.js"></script>
<script src="/scripts/bootstrap.js"></script>

我似乎无法正确渲染它,并且首先是哪个脚本标记无关紧要,这是它添加/保持波形符号的那个。我已经两次使用jquery脚本,第一个会有波形符,但第二个会被包括在内,但我根本不喜欢这个解决方案。

我正在使用VS 2012,它是一个.NET 4.5 MVC应用程序。从我的搜索来看,这似乎是Razor v1的一个已知问题,但他们提供的解决方案似乎并不适用于此。

2 个答案:

答案 0 :(得分:2)

你应该使用@Url.Content()帮助器(我们不再使用ASP.NET了,直到这里)。

<script src="@Url.Content("~/Scripts/jquery-2.0.3.min.js")"></script>
<!-- etc. -->

另一种选择是使用Microsoft.AspNet.Web.Optimization包并创建包:

** BundleConfig.cs

public void RegisterBundles(BundleCollection bundles)
{
  // ...
  bundles.Add(new ScriptBundle("~/js/site").Include(
    "~/Scripts/jquery-2.0.3.min.js",
    "~/Scripts/easing.js",
    "~/Scripts/bootstrap.js"
  ));
  // ...
}

然后在您的页面中使用:

@Scripts.Render("~/js/site")

答案 1 :(得分:1)

将参考文献粘贴在一个包中并使用@Scripts.Render("~/bundlename")或使用

<script src="@Url.Content("~/scripts/jquery-2.0.3.min.js")"></script>