asp.net mvc css url

        asp.net mvc4 的 cshtml文件中支持 虛擬路徑的語法,如
<a href="~/Default.cshtml">Home</a>

        但是,css 文件中不支持這種語法,比如這樣的文件結構:

Project

----Content

--------images

------------ok.png

--------Site.css

         如果我在Site.css文件中這樣引用圖片ok.png是不行的

#test{
    background: url ("~/Content/images/ok.png");
}
由於Site.css可能會以@Styles.Render()的形式被引用,那麼文件到達客戶端時的相對路徑就取決於BundleConfig.cs中如何配置,比如可以這樣:

public class BundleConfig {
    public static void RegisterBundles(BundleCollection bundles) {
        bundles.Add( new StyleBundle( "~/aa/home" ).Include( "~/Content/Site.css" ) );
    }
}
調用時這樣:

        @Styles.Render("~/aa/home")

到達客戶端時css文件是這樣的

        "http://localhost/aa/home?v=xxxxxxxxxxxxxxxxx"

如果改一下配置:

public class BundleConfig {
    public static void RegisterBundles(BundleCollection bundles) {
        bundles.Add( new StyleBundle( "~/aa/bb/home" ).Include( "~/Content/Site.css" ) );
    }
}
調用時這樣:

        @Styles.Render("~/aa/bb/home")

那麼到達客戶端時css文件是這樣的

        "http://localhost/aa/bb/home?v=xxxxxxxxxxxxxxxxx"

如此一來,在設置backgroud時,url是沒有辦法判斷相對路徑的,比如:

#test{
    background: url ("../Content/images/ok.png");
}
所以,圖片放在根目錄文件夾Images中爲好,直接寫成

#test{
    background: url ("/Images/ok.png");
}







發佈了32 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章