asp.net-mvc-4 – 为什么MVC4 @ Styles.Render()在调试模式下不如预期的那样运行
发布时间:2020-05-23 16:33:27 所属栏目:asp.Net 来源:互联网
导读:我正在MVC4中实现捆绑和缩小支持,并设置它,因此可以为我自动编译我的Bootstrap .less文件。我的BundleConfig.cs文件中有以下代码 public class BundleConfig{ public static void RegisterBundles(BundleCollection bundles) { // base bundle
|
我正在MVC4中实现捆绑和缩小支持,并设置它,因此可以为我自动编译我的Bootstrap .less文件。我的BundleConfig.cs文件中有以下代码 public class BundleConfig
{
public static void RegisterBundles(BundleCollection bundles)
{
// base bundles that come with MVC 4
var bootstrapBundle = new Bundle("~/bundles/bootstrap").Include("~/Content/less/bootstrap.less");
bootstrapBundle.Transforms.Add(new TwitterBootstrapLessTransform());
bootstrapBundle.Transforms.Add(new CssMinify());
bundles.Add(bootstrapBundle);
}
}
TwitterBootsrapLessTransform如下(它比我想要的更复杂,因为需要将sub.less文件导入到dotLess) public class TwitterBootstrapLessTransform : IBundleTransform
{
public static string BundlePath { get; private set; }
public void Process(BundleContext context,BundleResponse response)
{
setBasePath(context);
var config = new DotlessConfiguration(DotlessConfiguration.GetDefault());
config.LessSource = typeof(TwitterBootstrapLessMinifyBundleFileReader);
response.Content = Less.Parse(response.Content,config);
response.ContentType = "text/css";
}
private void setBasePath(BundleContext context)
{
BundlePath = context.HttpContext.Server.MapPath("~/Content/less" + "/imports" + "/");
}
}
public class TwitterBootstrapLessMinifyBundleFileReader : IFileReader
{
public IPathResolver PathResolver { get; set; }
private string basePath;
public TwitterBootstrapLessMinifyBundleFileReader(): this(new RelativePathResolver())
{
}
public TwitterBootstrapLessMinifyBundleFileReader(IPathResolver pathResolver)
{
PathResolver = pathResolver;
basePath = TwitterBootstrapLessTransform.BundlePath;
}
public bool DoesFileExist(string fileName)
{
fileName = PathResolver.GetFullPath(basePath + fileName);
return File.Exists(fileName);
}
public byte[] GetBinaryFileContents(string fileName)
{
throw new System.NotImplementedException();
}
public string GetFileContents(string fileName)
{
fileName = PathResolver.GetFullPath(basePath + fileName);
return File.ReadAllText(fileName);
}
}
在我的基地_Layout.cshtml页面上,我尝试通过这样做来呈现css文件 @Styles.Render("~/bundles/bootstrap");
如mvc tutorial所建议的,客户端浏览器最终请求的文件是 http://localhost:53729/Content/less/bootstrap.less 这会导致错误。如果我将以下链接放入基本布局页面,它按预期工作。 <link href="~/bundles/bootstrap" rel="stylesheet" type="text/css" /> 为什么@ Styles.Render()在调试模式下的行为方式相同?它在释放模式下工作。我可以理解你如何不想在调试中进行捆绑和缩小,但是如何强制这个捆绑包总是以同样的方式工作? 解决方法所以基本上当debug =“true”时,脚本/样式渲染方法假设优化是关闭的,这意味着没有捆绑和没有缩小,这意味着它不会调用你的转换;相反,它只会渲染链接到包的原始内容(在您的情况下,这是boostrap.less)。您可以覆盖此行为,并始终通过设置BundleTable.EnableOptimizations = true来运行优化。这将强制渲染方法始终进行捆绑/缩小。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
推荐文章
站长推荐
- asp.net 禁用viewstate在web.config里
- .net – 多选列表框中的预选项目(MVC3 Razor)
- asp.net-mvc-3 – ASP.NET MVC 3:当BeginForm在
- 从未调用ASP.NET Web API自定义JsonConverter
- asp.net – 是否值得在IIS7中启用动态压缩?
- asp.net-mvc-4 – GAC问题不能在IIS上托管应用程
- asp.net-mvc-3 – 在ASP.NET MVC3中使用pdf.js.
- asp.net-mvc – 有没有人知道让Ninject 2在ASP.N
- asp.net-mvc – 在应用程序洞察中设置用户名
- asp.net-mvc-4 – 访问路径“/ etc/mono/registr
热点阅读
