asp.net-mvc功能 - 每个(css / master-page / user-control)一个css文件

时间:2010-04-30 19:32:01

标签: asp.net-mvc css

我正在尝试实现以下功能:

我想要为我呈现的任何页面附加一个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,视图和用户控件。

那么,对于这类问题,什么是正确的解决方案?

我正在考虑一个解决方案,我会把它作为答案,但也许你有更好的解决方案吗?

4 个答案:

答案 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. 具有相同视图名称的文件。喜欢:Questions.less。
  2. 将查看任何母版页/用户控件的视图(Questions.aspx),并添加它们(Site.master.less)。
  3. 你怎么看?有可能实现它吗?这是好主意吗?

答案 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链接标记。