2009-09-02 58 views
1

我想在我的母版頁創建取決於渲染的ViewPage會改變一個CSS文件ASP MVC.NET控制CSS內容

我想做出一個特定的控制器「CssController」,並把這種控制CssController從css鏈接的src屬性中獲取。這個控制器將負責選擇正確的css並用text/css頭返回。

問題:這種方法會打破mvc模式嗎?事實上,設計的選擇將負責控制器。有更好的選擇嗎?

回答

1

我在我的母版頁所做的是在<head>節創建的ContentPlaceHolder,像這樣:

<head runat="server"> 
<title>Title Here</title> 
<script src="<%= Url.Content("~/Scripts/jquery-1.3.2.min.js") %>" type="text/javascript" ></script> 
<link href="<%= Url.Content("~/Content/css/site.css") %>" rel="stylesheet" type="text/css" /> 
<asp:ContentPlaceHolder ID="HeadContent" runat="server" /> 
</head> 

然後,當您使用母版頁創建視圖時,可以將特定於視圖的CSS添加到該內容佔位符中。這樣,它會首先將您的site.css,加上所需的CSS,JavaScript,<script>塊,無論在哪個視圖上。

0

基本MVC示例通過控制器設置頁面標題。我不確定這有什麼不同。如果您正在使用它(例如)讓用戶能夠爲他們的體驗選擇不同的皮膚,我不確定是否有其他方式來執行此操作,無論它是否違反了該模式。

1

如果你爲不同的主題使用單獨的css文件,那麼這些將實際上是視圖和控制器將工作。所以它似乎沒有違反這種模式。但是,它似乎是比其他解決方案更復雜的解決方案。

我已經看到了這樣做的常用方法是用一個jQuery風格切換


http://www.cssnewbie.com/simple-jquery-stylesheet-switcher/


隨着代碼一點點就可以判斷默認的樣式來顯示每個

+0

不,這不僅僅是爲了主題。舉例來說,在主頁上,我想要CSS css和我的購物車頁面site.css + cart.css的編譯內容。我會看看你的鏈接謝謝。 – Gregoire