ScriptBundle(“〜/脚本/供应商”)

bza*_*fir 4 asp.net-mvc resourcebundle

我写了一个新的应用程序,它将使用现有的主题,设计师将对其进行更改。

因此,我决定将主题保留在Theme文件夹(带有子目录-js,css,img)中,而不是将脚本放入“脚本”中以及“内容”中的其他所有内容(Css,图像)中

所以我尝试更改捆绑的脚本以指向主题/ js中的脚本,而不是脚本

我将其更改为

bundles.Add(
          new ScriptBundle("~/Scripts/vendor")
            .Include("~/Theme/js/jquery-{version}.js")
            .Include("~/Theme/js/knockout-{version}.debug.js")
            .Include("~/Theme/js/sammy-{version}.js")
            .Include("~/Theme/js/toastr.js")
            .Include("~/Theme/js/Q.js")
            .Include("~/Theme/js/breeze.debug.js")
            .Include("~/Theme/js/bootstrap.js")
            .Include("~/Theme/js/moment.js")
          );
Run Code Online (Sandbox Code Playgroud)

我不明白的是线

new ScriptBundle("~/Scripts/vendor")
Run Code Online (Sandbox Code Playgroud)

如果我将其保留为上述内容(即使没有Scripts / vendor文件夹,代码也可以正常工作,但是如果我将其更改为

new ScriptBundle("~/Theme/js/vendor")
Run Code Online (Sandbox Code Playgroud)

我在萤火虫中收到网络错误:

"NetworkError: 404 Not Found - http://localhost:51154/scripts/vendor"
Run Code Online (Sandbox Code Playgroud)

其余脚本未加载。

那条线是做什么的?

谢谢

Cod*_*ter 5

bundles.Add(ScriptBundle)方法将脚本包添加到bundles表中,您可以通过提供给ScriptBundle(string)构造函数的字符串对其进行引用。

因此,使用创建new ScriptBundle("~/Foo")和添加到的包bundles,以后可以使用渲染@Scripts.Render("~/Foo")

您可能忘记的是将@Scripts.Render("~/Scripts/vendor")_layout.cshtml 更改为@Scripts.Render("~/Theme/js/vendor"),这将是您看到的错误。

传递给构造函数的参数仅记录“捆绑包的虚拟路径”,因此您必须弄清楚这意味着什么以及可以放置和不能放置的内容。