2011-01-27 9 views
3

短期間では、私はそれを動作させることはできません。フィルタはそれを自己適用するようには見えません。CombresとDotLessCssFilter

私はMVC 3カミソリのアプリケーションで動作するようにコンフェクトを取得しようとしています。そして私はDotLessCssFilterを除いてすべてを稼働させています。

<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> 

をそして、それはそれが必要として、ファイルやminifiesを兼ね備え:ドキュメントで

それは私がこのようcombres.configを変更したIn order to apply a filter to your resource sets, you need to modify your Combres config file

言います。私のファイルの一つで

私はシンプルあまり構文があります。

@sprite: url(/ui/styles/sprite.png); 

.foo { 
    background-image: @sprite; 
} 

をしかし、フィルタを介して置くことはありませんだと思われます。

これはMVCの問題か一般的な問題かわかりません。

誰でもこのフィルタを使用しましたか?

心配しないでください! (EDIT)

答えて

1

が、それは私の場合にはように、適切なのResourceSet名を持っている必要がありますacceptedResourceSets="dotLessCss"を逃した答えを参照してください:

acceptedResourceSets="siteCss"

1

をあなたが実際にしない限り、acceptedResourceSetsを持っている必要はありません。あなたはしたい。ここで

は(コメントを参照してください)私はPOCとおりにしたテストプロジェクトからのサンプルCombres.xmlファイルです:

<?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> 

Variables.css:

@sprite: url('~/Content/ui/styles/sprite.png'); 

Test1.css:

.fooTest1 {背景画像:@sprite;}

Test2.css:

.fooTest2 {背景画像:@sprite;}(Firebugの.NETタブを介して)

出力:

.fooTest1{background-image:url("/Content/ui/styles/sprite.png")}.fooTest2{background-image:url("/Content/ui/styles/sprite.png")} 

私はあなたのサンプルアプリでそれを主張DotLessCssFilterを登録する必要はなく、代わりにHandleCssVariablesFilterを登録するだけで済みます。

これで、各cssファイルにcss変数を定義できます(再利用はできません)。

しかし、複数のファイルにcss変数を定義して共有したい場合は、上記のようにフィルタの登録を設定してください。魅力的です。

Buu NguyenはCombresプロジェクトで素晴らしい仕事をしています。

+0

さらに進んで、現在のバンドルではなく、MVCチームがCombresの機能をMVCに組み込むことを望みました。 –

関連する問題