2013-09-25 58 views
0

我有一个非常简单的MVC项目,并在我的_Layout.cshtml我有一些JS包括像这样:ASP.NET MVC视图渲染不正确的脚本标签

<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> 

我看来不能让它正确地呈现,并且没关系script标签是第一个,就是它增加了一个/保持波浪号。我已经采取了两次包括jquery脚本,第一个将有一个代字符,但第二个将包括,但我不喜欢这个解决方案。

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

回答

2

您应该使用@Url.Content()帮手(我们在ASP.NET更多,TOTO不是)。

<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") 
+0

感谢。我不知道这是不可能的。 – Mike

+0

作为一个更新,MVC和剃须刀现在开箱即用(用于脚本和样式表)。不需要'Url.Content'(除非你愿意为你自己而这么做)。 –

1

要么粘在引用捆绑,并使用@Scripts.Render("~/bundlename")或使用

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