2012-05-28 30 views
9

由於將我的網站從ASP.NET WebPages切換到MVC4,我在Lesscss中遇到了問題。Lesscss和ASP.NET MVC

CSS +的Javascript線:

<link href="@Url.Content("~/Content/site.css")" rel="stylesheet/less" type="text/css" /> 
<script src="@Url.Content("~/Scripts/less-1.3.0.min.js")" type="text/javascript"></script> 

我不知道什麼是錯的。路徑是正確的。當您從CSS鏈接中刪除「/ less」以正常使用時,樣式表工作正常。當試圖使用Lesscss JS文件時,它加載正常,但沒有加載sylesheet。 IE中的F12開發工具也確認樣式表未被加載。

在使用Lesscss和MVC4時,有沒有其他人有過類似的問題?

+0

我想'less.js'應先還裝載樣式表之前,您樣式表需要在'.less'而不是'.css' – Drew

+2

由於它的.net項目,checkout無點,一個C#端口。它可能更適合您的需求。 –

回答

8

您應該在web.config中爲較少的文件擴展名指定mime類型,並在鏈接中使用該類型,而不是使用css。

<system.webServer> 
    <staticContent> 
    <mimeMap fileExtension=".less" mimeType="text/css" /> 
    </staticContent > 
</system.webServer> 

我個人使用帶點並在服務器上處理這件事情是一個更好的路要走。

此外,不是真正的答案你的問題,但只是一個側面 - 與MVC4你不再需要@ Url.Content()。 http://www.davidhayden.me/blog/asp.net-mvc-4-the-new-tilde-slash-feature-in-razor-2

24

在我看來,一個簡單的方法來設置這個更好的是使用nuget。你不必使用nuget,但它使事情變得如此簡單。

  1. 使用nuget安裝dotless
  2. 使用nuget安裝System.Web.Optimization.Less
  3. 添加您的捆綁

    bundles.Add(new LessBundle("~/Content/less") 
           .Include("~/Content/less/more.less")); 
    
  4. 參考捆

    @Styles.Render("~/Content/less") 
    
  5. 完成

+0

簡明扼要。謝謝。 –

+1

最後,一個快速和很好的答案。謝謝你節省我的時間:) – jhartzell

+4

N.B.你可以簡單地做2.即使用nuget安裝System.Web.Optimization.Less,因爲它將下拉1作爲依賴。謝謝 ! – MemeDeveloper