我一直在尝试ASP.NET MVC 4中新的缩小和捆绑功能,只要你使用css和js文件的默认文件夹约定,它就会很好用.
/Content
/Scripts
Run Code Online (Sandbox Code Playgroud)
我通常把css和脚本放在一个名为Static的文件夹中
/Static/Css
/Static/Js
Run Code Online (Sandbox Code Playgroud)
我试着像这样注册我自己的包:
public static class BundleCollectionExtensions
{
public static void RegisterScriptsAndCss(this BundleCollection bundles)
{
var bootstrapCss = new Bundle("~/Static/Css", new CssMinify());
bootstrapCss.AddDirectory("~/Static/Css", "*.css");
bootstrapCss.AddFile("~/Static/Css/MvcValidation.css");
bootstrapCss.AddFile("~/Static/Css/bootstrap-responsive.min.css");
bootstrapCss.AddFile("~/Static/Css/bootstrap.min.css");
bundles.Add(bootstrapCss);
var bootstrapJs = new Bundle("~/Static/Js", new JsMinify());
bootstrapJs.AddDirectory("~/Static/Js", "*.js");
bootstrapJs.AddFile("~/Static/Js/jquery-1.7.1.min.js");
bootstrapJs.AddFile("~/Static/Js/jquery.validate.min.js");
bootstrapJs.AddFile("~/Static/Js/jquery.validate.unobtrusive.min.js");
bootstrapJs.AddFile("~/Static/Js/bootstrap.min.js");
bootstrapJs.AddFile("~/Static/Js/gunsforhire.js");
bundles.Add(bootstrapJs);
}
}
Run Code Online (Sandbox Code Playgroud)
并在
Global.ascx.cs
Run Code Online (Sandbox Code Playgroud)
我这样做了:
BundleTable.Bundles.RegisterScriptsAndCss();
Run Code Online (Sandbox Code Playgroud)
生成的标记如下所示:
<link href="/Static/Css?v=D9JdmLZFFwjRwraNKfA1uei_YMoBoqLf-gFc0zHivM41" rel="stylesheet" type="text/css" />
<script src="/Static/Js?v=mbKbf5__802kj-2LS5j9Ba-wvSxBCKNMQGBgzou6iZs1" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
但是这不起作用,请求看起来像这样:
Request URL:http://localhost:49603/Static/Js?v=mbKbf5__802kj-2LS5j9Ba-wvSxBCKNMQGBgzou6iZs1
Request Method:GET
Status Code:301 Moved Permanently (from cache)
Query String Parametersview URL encoded …Run Code Online (Sandbox Code Playgroud)