我正在尝试实现以下功能:
我想要为我呈现的任何页面附加一个css文件。例如,使用StackOverflow站点。对于问题页面,我们将有questions.css文件。
so.com/questions ---> questions.css
so.com/question/1234/title ---> question.css
so.com/about ---> about.css
so.com/faq ---> faq.css
现在,我知道这个css文件共享代码,因为它们可能具有相同的MasterPage(s)/ UserControls。因此,解决方案还需要考虑MasterPages,视图和用户控件。
那么,对于这类问题,什么是正确的解决方案?
我正在考虑一个解决方案,我会把它作为答案,但也许你有更好的解决方案吗?
答案 0 :(得分:1)
一种解决方案如下:使用与views文件夹相同的约定。我们将在解决方案中提供一个与views文件夹非常相似的css文件夹。
这是我们的观点文件夹:
Views
Home
Index.aspx
About.aspx
Faq.aspx
Questions
Questinos.aspx
QuestionDetails.aspx
Shared
Site.master
Admin.master
所以,这是我们需要的css文件夹:
css
Home
Index.less
About.less
Faq.less
index.css
about.css
faq.css
Questions
Questinos.less
QuestionDetails.less
questions.css
question-details.css
Shared
Site.master.less
Admin.master.less
less
文件是我们编写的文件。 css
文件是我们要向浏览器公开的文件。它们由构建操作生成。但是如何?
每个视图都有一个相应的css
文件。此css
文件将根据以下less
文件构建:
你怎么看?有可能实现它吗?这是好主意吗?
答案 1 :(得分:1)
但为什么 你会这样做?
使用CSS的一个原因是将所有内容放在一个地方,而不是四处散落。
如果您需要不同视图的不同样式,您也可以在每个视图(<body id="index">
)的body标记中放置一个唯一ID,然后使用#index #subnav a
之类的选择器来设置该视图的显式样式。通过这种方式,您可以在一个样式表中拥有所有内容,并且它仍然可以为您提供不同的页面外观,同时轻松共享常用样式。一个大型样式表可能比每个子页面的新HTTP请求更高效,性能更好,并且当您需要更改内容时,它将为您节省大量工作。
另一种方法是在页面上包含两个(或更多)样式表,其中一个包含所有常见样式,另一个样式在某种程度上对每个视图都是唯一的。
如果我在你的位置,我很容易做出一个大样式表。简化了一切。
答案 2 :(得分:0)
您可以将CSS文件放在每页上。我要做的第一件事是将以下内容占位符添加到<head>
标记内的母版页中:
<asp:ContentPlaceHolder ID="ExtraContent" runat="server" />
然后在单个视图(例如您的问题视图)上,您可以添加以下内容:
<asp:Content ID="Content3" ContentPlaceHolderID="ExtraContent" runat="server">
<link href="/Content/question.css" rel="stylesheet" type="text/css" />
</asp:Content>
答案 3 :(得分:0)
在主页上的<head>
元素中添加内容占位符,并在视图中添加CSS链接标记。