Bundles中的脚本使用〜/ Scripts进行渲染,因此找不到它

时间:2013-04-11 06:43:02

标签: c# asp.net-mvc-4 bundle

我有一个由其他人部分开发的MVC应用程序。它适用于那台特定的机器。 当我在我的机器上运行应用程序时,我发现bundle中的脚本是以相对路径呈现的。

<script type="text/javascript" src="~/Scripts/jquery-1.9.1.js"></script>

所有脚本都以与CSS文件呈现良好相同的方式呈现。我这样使用捆绑包。

BundleConfig.cs中的

  bundles.Add(new ScriptBundle("~/bundles/EMRMobileScript").Include (
  "~/MobileQuerys/js/jquery.js",
  "~/MobileQuerys/docs/_assets/js/jqm-demos.js"
  ));

在_Layout.cshtml中

@Styles.Render("~/Content/EMRMobilecss")
@System.Web.Optimization.Scripts.Render("~/bundles/EMRMobileScript") 

在浏览器控制台中

GET http://localhost:6326/~/Scripts/jquery-1.9.1.js 404 (Not Found) 

为什么用 ??

进行渲染

2 个答案:

答案 0 :(得分:0)

如果它在本地主机上运行,​​则会发生已知错误。如果IIS正在运行应用程序,那很可能是一个问题。您是否尝试过只运行MVC?

否则,在IIS上运行它时,实际上并没有解决这个问题。

答案 1 :(得分:0)

您的客户并不知道&#34;〜&#34;标志意味着服务器。它只是你放在一个字符串中的另一个字符。

当您添加相对src时,它将是&#34; concated&#34;到当前路径,这是

http://localhost:6326/

这就是你收到这个请求的原因:

http://localhost:6326/~/Scripts/jquery-1.9.1.js

现在,当您在服务器中使用以下代码行时:

@Styles.Render("~/Content/EMRMobilecss")

服务器知道如何映射路径(其中〜是应用程序&#34; root&#34;目录)。

为了从你的js渲染特定的包,请使用:

<script src='http://localhost:6326/Scripts/jquery-1.9.1.js'></script>