2010-05-12 42 views
1

我注意到我無法在任何頁面上添加樣式表。他們必須被添加到主頁面。ASP.NET MVC - 樣式表是否必須進入Site.Master文件?

我已經有大約15個樣式表在主視圖中,這似乎是矯枉過正,因爲只有一些頁面使用特定的樣式表。

我想我可以通過JavaScript引用該文件(雖然,我想不出如何離開我的頭頂),但它真的很好,不必使用任何。

回答

7

你應該能夠將其添加到內容頁頭佔位符...

母版:

<head> 
    <asp:ContentPlaceHolder ID="HeadContent" runat="server" /> 
</head> 

內容頁:

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> 
    <%-- link styles here...--%> 
</asp:Content> 
+1

差不多同樣的例子我了。 +1 – Armstrongest 2010-05-12 17:44:47

+0

可悲的是,至少在VS2k8中,當你創建一個MasterPage的時候,它會爲你添加一個,用'id =「head」' – Powerlord 2010-05-12 18:21:42

+0

啊,我得試試看,謝謝。我甚至不知道asp contentPlaceHolder的用途。 – Darcy 2010-05-12 18:34:37

1

不,他們不」不必進入母版頁。

您可以在母版頁中爲它們創建內容佔位符,然後使用頁面上的內容元素添加頁面特定的樣式。

例如,在主:

<head> 
    <asp:ContentPlaceHolder ID="Styles" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 

然後在頁面:

<asp:Content ID="styleContent" ContentPlaceHolderID="Styles" runat="server"> 
    <link rel="stylesheet" type="text/css" href="<%= Url.Content("~/Content/style/MyStyles.css") %>" /> 
</asp:Content> 
1

你能表現出一定的代碼?

它實際上有可能在視圖中有一個CSS樣式表。但問題是這是否是一種好的做法。最好的辦法是在Head部分的masterpage中創建一個佔位符,並在視圖中使用這個佔位符來使用正確的CSS文件。

像這樣:

在你的母版:

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Example</title> 
    <asp:ContentPlaceHolder ID="HeadContent" runat="server" /> 
</head> 

<body> 

內,您的看法:

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> 
    <link href="<%= Url.Content("~/Content/style/MyStyles.css") %>" rel="stylesheet" type="text/css" /> 
</asp:Content> 
+0

首選'Url.Content'通過相對路徑,因爲前者不會因路由更改而中斷。 – 2010-05-12 17:46:42

+0

你完全屬實。剛剛在那裏複製了一個快速鏈接標籤。爲了方便後來的讀者而更改它。 – 2010-05-12 17:57:28

0

您可以將樣式表,用圖像和控制皮膚一起,爲Theme的一部分並在每個內容頁面上指定應使用哪個主題。 注意:您不能在MasterPage本身中指定主題。它只適用於Page指令。

請注意,這需要head元素爲runat="server"才能使ASP.NET自動將適當的樣式表引用添加到頁面。

我不知道這是否適用於ASP.NET MVC或沒有,但你使用母版...

相關問題