Asp.net mvc 梳状和圆点式过滤器
好吧,短期内我不能让它工作。过滤器似乎无法自行应用 我正在尝试让combres使用我的MVC3Razor应用程序。除了无点过滤器,我还有其他的工作要做 在文档中说Asp.net mvc 梳状和圆点式过滤器,asp.net-mvc,combres,Asp.net Mvc,Combres,好吧,短期内我不能让它工作。过滤器似乎无法自行应用 我正在尝试让combres使用我的MVC3Razor应用程序。除了无点过滤器,我还有其他的工作要做 在文档中说为了对资源集应用过滤器,您需要修改Combres配置文件 我修改了combres.config,如下所示: <combres xmlns='urn:combres'> <filters> <filter type="Combres.Filters.DotLessCssFilter,
为了对资源集应用过滤器,您需要修改Combres配置文件
我修改了combres.config,如下所示:
<combres xmlns='urn:combres'>
<filters>
<filter type="Combres.Filters.DotLessCssFilter, Combres" acceptedResourceSets="dotLessCss" />
</filters>
<resourceSets url="~/combres.axd" defaultDuration="30" defaultVersion="1" defaultVersionGenerator="Combres.VersionGenerators.Sha512VersionGenerator">
<resourceSet name="siteCss" type="css">
<resource path="~/UI/Styles/1140.css" />
<resource path="~/UI/Styles/typeimg.css" />
<resource path="~/UI/Styles/layout.css" />
</resourceSet>
<resourceSet name="siteJs" type="js">
<resource path="~/UI/Scripts/opt/util.js" />
<resource path="~/UI/Scripts/opt/core.js" />
</resourceSet>
</resourceSets>
</combres>
但它似乎从未通过过滤器
不知道这是MVC问题还是一般问题
有人成功使用此筛选器吗
没关系!(编辑)
请参阅答案遗漏了
acceptedResourceSets=“Dotlesscsss”
它需要有正确的资源集名称,因此在我的情况下:
acceptedResourceSets=“siteCss”
除非您愿意,否则实际上不需要acceptedResourceSets
下面是一个示例Combres.xml文件,它来自我作为POC执行的测试项目(请参见注释):
Test1.css:
.fooTest1{背景图像:@sprite;}
Test2.css:
.fooTest2{背景图像:@sprite;}
输出(通过Firebug.NET选项卡):
我认为,在示例应用程序中,您甚至不需要注册DotLessCssFilter,而应该只注册HandlecsVariablesFilter
然后可以在每个css文件中定义css变量(无需重用)
但是,如果您想在多个文件之间定义和共享css变量,请像我上面所做的那样设置过滤器注册,这非常有用
Buu Nguyen在Combres项目上做得很好。我想进一步说,我希望MVC团队将Combres功能整合到MVC中,而不是当前的捆绑。
@sprite: url(/ui/styles/sprite.png);
.foo {
background-image: @sprite;
}
<?xml version="1.0" encoding="utf-8"?>
<combres xmlns="urn:combres">
<filters>
<!-- This filter allows relative urls to be used in Css files like in .NET; e.g. "~/MyFolder/MyPic.png"-->
<filter type="Combres.Filters.FixUrlsInCssFilter, Combres" />
<!-- This filter allows you to define variables in a CSS file and reuse them throughout the file. -->
<filter type="Combres.Filters.HandleCssVariablesFilter, Combres" />
<!-- This filter changes Combres order of ops so that common css variables can be defined in a single
file and used throughout multiple css files, instead of having to define them in each file. -->
<filter type="Combres.Filters.DotLessCssCombineFilter, Combres" />
</filters>
<resourceSets defaultDebugEnabled="false"
defaultDuration="30"
defaultIgnorePipelineWhenDebug="true"
defaultVersion="auto"
localChangeMonitorInterval="30"
remoteChangeMonitorInterval="60"
url="~/combres.axd">
<resourceSet name="siteCss" type="css">
<resource path="~/content/Variables.css" />
<resource path="~/content/Test1.css" />
<resource path="~/content/Test2.css" />
<resource path="~/content/Site.css" />
</resourceSet>
<resourceSet name="siteJs" type="js">
<resource path="~/scripts/jquery-1.7.1.min.js" />
<resource path="~/scripts/jquery-ui-1.8.17.min.js" />
<resource path="~/scripts/jquery.unobtrusive-ajax.min.js" />
<resource path="~/scripts/modernizr-1.7.min.js" />
</resourceSet>
</resourceSets>
</combres>
@sprite: url('~/Content/ui/styles/sprite.png');
.fooTest1{background-image:url("/Content/ui/styles/sprite.png")}.fooTest2{background-image:url("/Content/ui/styles/sprite.png")}