我见过很多代码参考了这个:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
哪个好,哪个有效...如果包含“内容”。我是否必须添加引用才能获得这些内容?使用NuGet?复制DLL?这是从哪里来的?
当我运行我的项目时,我获得了该资源的404。
答案 0 :(得分:11)
您需要创建捆绑包。这通常在ASP.NET MVC 4项目的App_Start\BundleConfig.cs
文件中完成。这一切都在Bundling and Minification 中解释。
在BundleConfig
类中你需要这样的东西(这个方法应该在Application_Start
中执行):
public static void RegisterBundles(BundleCollection bundles) {
bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
"~/Scripts/jquery-{version}.js"));
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
// ... more registrations ...
}
javascript源文件应存在于Scripts
文件夹中。上面链接的教程解释了如何在发布版本等中捆绑缩小版本。
答案 1 :(得分:9)
仅供参考 - 我已经看过很多在MVC中使用Bundles的例子,但是大多数人忽略了这个程序集在System.Web.Optimization.dll中你可以通过添加 Microsoft ASP从NuGet获得这个.NET Web Optimization Framework 包。
答案 2 :(得分:7)
是的,您必须在应用程序中注册捆绑包。
Global.asax.cs:
protected void Application_Start() {
AreaRegistration.RegisterAllAreas();
// Register the bundles
BundleConfig.RegisterBundles(BundleTable.Bundles);
}
BundleConfig.cs:
public class BundleConfig
{
// For more information on Bundling, visit http://go.microsoft.com/fwlink/?LinkId=254725
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new ScriptBundle("~bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*",
"~/Scripts/jquery.livequery.js",
"~/Scripts/jquery.numeric.js"
));
}
因此,当您将此代码放在视图中时:
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
它将渲染4个javascript文件。
答案 3 :(得分:0)
在您的项目中App_Start/BundleConfig.cs
是所有包的声明。
考虑一下:
bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
"~/Scripts/jquery.unobtrusive*",
"~/Scripts/jquery.validate*"));
在这种情况下,如果您引用“〜/ bundles / jqueryval”,它将包含2个列出的脚本,作为奖励,它将缩小它们(如果您以“Release”模式运行项目)。
请查看 this 了解详情。
答案 4 :(得分:0)
bundles.Add(new ScriptBundle("~bundles/jqueryval").Include("~/Scripts/jquery.min.js"));
请注意,在Include方法中,它包含项目中的文件。