ASP.NET MVC:利用ASP.NET MVC4的IBundleTransform集成LESS

背景

LESS确实不错,只是每次写完LESS都要手工编译一下有点麻烦(VS插件一直没有安装好),昨天在官方看到了如何用IBundleTransform集成LESS,今天就记录一下。

参考资料:http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification。

代码

LessTransform

 1 using System;
2 using System.Collections.Generic;
3 using System.Linq;
4 using System.Web;
5
6 using System.Web.Optimization;
7
8 namespace LessStudy.Infrastructure
9 {
10 public class LessTransform : IBundleTransform
11 {
12 public void Process(BundleContext context, BundleResponse response)
13 {
14 response.Content = dotless.Core.Less.Parse(response.Content);
15 response.ContentType = "text/css";
16 }
17 }
18 }

BundleConfig中增加如下代码

1             var lessBundle = new Bundle("~/Content/less").IncludeDirectory("~/Content/less", "*.less");
2 lessBundle.Transforms.Add(new LessTransform());
3 lessBundle.Transforms.Add(new CssMinify());
4 bundles.Add(lessBundle);

在模板中引用

1     @Styles.Render("~/Content/less")

顺便说一下LESS的编码

写注释和统一的格式化

  1 /*栅格的左边距*/
2 @span_margin: 20px;
3 /*栅格的的宽度*/
4 @span_width: 60px;
5 /*栅格数量*/
6 @span_length: 12;
7 /*像素单位*/
8 @px_unit: 1px;
9
10 /*固定栅格系统*/
11 .row
12 {
13 margin-left: -@span_margin;/*抵消第一个栅格的左边距*/
14 *zoom: 1;
15 }
16
17 [class*="span"]
18 {
19 float: left;
20 min-height:1px;
21 margin-left: @span_margin;
22 }
23
24 .span (@index) when (@index > 0)
25 {
26 .span@{index}
27 {
28 width: (@index * @span_width + (@index - 1) * @span_margin) * @px_unit;
29 }
30
31 .span(@index - 1);
32 }
33
34 .span (0) {}
35
36 .span (@span_length);
37
38 .offset (@index) when (@index > 0)
39 {
40 .offset@{index}
41 {
42 margin-left: (@index * @span_width + (@index + 1) * @span_margin) * @px_unit;
43 }
44
45 .offset(@index - 1);
46 }
47
48 .offset (0) {}
49
50 .offset (@span_length);
51
52
53
54
55 /*自动栅格系统*/
56
57 /*栅格的宽度和左边距之比*/
58 @span_width_margin_scale: 3;
59 /*栅格的左边距比例*/
60 @span_margin_percentage: (1 / (@span_length * (@span_width_margin_scale + 1) - 1));
61
62 .row-fluid
63 {
64 width: 100%;
65 *zoom: 1;
66 }
67
68 .row-fluid [class*="span"]:first-child
69 {
70 margin-left: 0;
71 }
72
73 .row-fluid [class*="span"]
74 {
75 display: block;
76 float: left;
77 min-height: 30px;
78 margin-left: percentage(@span_margin_percentage);
79 -webkit-box-sizing: border-box;
80 -moz-box-sizing: border-box;
81 box-sizing: border-box;
82 }
83
84 .fluid_span (@index) when (@index > 0)
85 {
86 .row-fluid .span@{index}
87 {
88 width: percentage((@index * (@span_width_margin_scale + 1) - 1) * @span_margin_percentage);
89 }
90
91 .fluid_span(@index - 1);
92 }
93
94 .fluid_span (0) {}
95
96 .fluid_span (@span_length);
97
98 .fluid_offset (@index) when (@index > 0)
99 {
100 .row-fluid .offset@{index}
101 {
102 margin-left: percentage((@index * (@span_width_margin_scale + 1) + 1) * @span_margin_percentage);
103 }
104
105 .fluid_offset(@index - 1);
106 }
107
108 .fluid_offset (0) {}
109
110 .fluid_offset (@span_length);

如何利用CSS的智能提示呢?

添加文件的时候选择css,然后修改后缀名为less就行了。

备注

学习HTML+CSS有一周了,今天做个网站试试。

 
分类: ASP.NET MVC

ASP.NET MVC:利用ASP.NET MVC4的IBundleTransform集成LESS的更多相关文章

  1. [ASP.NET MVC] 利用动态注入HTML的方式来设计复杂页面

    原文:[ASP.NET MVC] 利用动态注入HTML的方式来设计复杂页面 随着最终用户对用户体验需求的不断提高,实际上我们很多情况下已经在按照桌面应用的标准来设计Web应用,甚至很多Web页面本身就 ...

  2. ASP.NET MVC利用PagedList分页(二)PagedList+Ajax+JsRender

    (原文) 昨天在ASP.NET MVC利用PagedList分页(一)的 最后一节提到,一个好的用户体验绝对不可能是点击下一页后刷新页面,所以今天来说说利用Ajax+PagedList实现无刷新(个人 ...

  3. 转:【译】Asp.net MVC 利用自定义RouteHandler来防止图片盗链

    [译]Asp.net MVC 利用自定义RouteHandler来防止图片盗链   你曾经注意过在你服务器请求日志中多了很多对图片资源的请求吗?这可能是有人在他们的网站中盗链了你的图片所致,这会占用你 ...

  4. 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递

    通过第一天的学习之后,我们相信您已经对MVC有一些基本了解. 本节所讲的内容是在上节的基础之上,因此需要确保您是否掌握了上一节的内容.本章的目标是在今天学习结束时利用最佳实践解决方案创建一个小型的MV ...

  5. 既生瑜何生亮?ASP.NET MVC VS ASP.NET Web API

    Asp.net MVC 与 Asp.net Web API 区别 在我们开发一些web应用时,我们一样可以在MVC Framework 中使用JsonResult 来返回JSON数据,同样也可以处理一 ...

  6. 返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, .net 4.5 带来的更方便的异步操作

    原文:返璞归真 asp.net mvc (11) - asp.net mvc 4.0 新特性之自宿主 Web API, 在 WebForm 中提供 Web API, 通过 Web API 上传文件, ...

  7. 七天来学习ASP.NET MVC (两)——ASP.NET MVC 数据传输

    通过第一天的学习之后,我们相信您已经对MVC有一些基本了解. 本节所讲的内容是在上节的基础之上.因此须要确保您是否掌握了上一节的内容. 本章的目标是在今天学习结束时利用最佳实践解决方式创建一个小型的M ...

  8. 七天学会ASP.NET MVC (二)——ASP.NET MVC 数据传递 【转】

    http://www.cnblogs.com/powertoolsteam/p/MVC_two.html 通过第一天的学习之后,我们相信您已经对MVC有一些基本了解. 本节所讲的内容是在上节的基础之上 ...

  9. [转帖]Asp.net MVC 与 Asp.net Web API 区别

    Asp.net MVC 与 Asp.net Web API 区别 https://www.cnblogs.com/viktor988/ https://www.cnblogs.com/terry283 ...

随机推荐

  1. Android checkCallingPermission()方法返回值问题

    Android开发检查权限时,发现调用checkCallingPermission()总是返回值-1,而Binder.getCallingPid() == Process.myPid()又总是返回tr ...

  2. UIImage分类:返回一个可以拉伸的图片

    // 返回一个可拉伸的图片 // UIImage的分类 + (UIImage *)resizedImage:(NSString *)name { UIImage *image = [self imag ...

  3. unity3d插件Daikon Forge GUI 中文教程-1-Daikon Forge介绍

    (游戏蛮牛首发)大家好我是孙广东官网提供了专业的视频教程http://www.daikonforge.com/dfgui/tutorials/,只是是在youtube上,要观看是须要FQ的. 只是教程 ...

  4. struts2注解redirect传递参数解决方案时,中国的垃圾问题

    struts2注解redirect传递参数解决方案时,中国的垃圾问题 试过很多方法  tomcat 编码  .字符串转换 .URLEncoder  .. 但是,没有解决方案,然后仔细阅读   stru ...

  5. 快速构建Windows 8风格应用16-SettingContract原理及构建

    原文:快速构建Windows 8风格应用16-SettingContract原理及构建 本篇博文主要介绍Setting Contract概述.Setting Contract实现基本原理.如何构建Se ...

  6. Spring之SpringMVC的Controller(源码)分析

    说明: 例子就不举了,还是直接进入主题,本文主要是以SpringMVC的Controller接口为入点,来分析SpringMVC中C的具体实现和处理过程. 1.Controller接口 public ...

  7. GIMP也疯狂之动态图的制作(三)

    Note:本篇文章内容为linux下利用gimp和其它工具组合完成截取制作GIF图的一种实现,制作更为灵活,但并不方便,如果不需要那么高的定制性,并追求方便高效.可以使用类似QQ影音之类的软件,自带截 ...

  8. 【SSRS】入门篇(五) -- 设置报表格式

    原文:[SSRS]入门篇(五) -- 设置报表格式 在上一节 [SSRS]入门篇(四) -- 向报表添加数据 我们设置好了报表,并可以预览到数据,如下图: 当报表完成后,有个重要的工作就是美化报表格式 ...

  9. 使用JasperReport+iReport进行Web报表开发

    使用JasperReport+iReport进行Web报表开发 前言 在实际工程中非常,报告是其中很重要的一部分,结果以报表的形式呈现出来.这里所提到的报表可不是简单的二维表,而是拥有复杂表头的.多维 ...

  10. apache 提示You don't have permission to access /test.php on this server.怎样解决

    把denty改成allow httpd.conf文件中. <Directory "cgi-bin"> AllowOverride None Options None O ...