ASP.NET MVC - 样式表必须放在Site.Master文件中吗?

时间:2010-05-12 17:35:27

标签: c# asp.net-mvc css stylesheet site.master

我注意到我无法在任何页面上添加样式表。必须将它们添加到母版页。

我在主视图中已经有大约15个样式表,这看起来有些过分,因为只有部分页面使用某个样式表。

我想我可以通过javascript引用该文件(虽然,我无法想到我的头脑中有多少),但是不必使用任何文件会非常好。

4 个答案:

答案 0 :(得分:7)

您应该可以将它们添加到内容页面上的头部占位符...

母版:

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

内容页面:

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

答案 1 :(得分: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>

答案 2 :(得分:1)

你能展示一些代码吗?

实际上可以在视图中使用CSS样式表。但问题是,这是一个好习惯。最好的想法是在Head部分的母版页中创建一个占位符,并在视图中使用此占位符来使用正确的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>

答案 3 :(得分:0)

您可以将样式表以及图像和控件外观存储为Theme的一部分,并在每个内容页面上指定应使用哪个主题。 注意:您无法在MasterPage本身中指定主题。它仅适用于Page指令。

请注意,这需要head元素为runat="server",以便ASP.NET自动向页面添加相应的样式表引用。

我不确定这是否适用于ASP.NET MVC,但 使用MasterPage ...