3

我正在使用 MVC/Razor/.Net/C#,我希望允许用户更改网站的主题,就像您可以在 microsoft windows 中更改主题一样。

有谁知道如何,或者,可以指出一些好的教程/示例的方向。

干杯

4

2 回答 2

4

这是一个非常非常广泛的问题,有许多正确的方法。

您可以创建一个基本控制器,在每个请求期间从数据库加载用户选择的 CSS 主题名称。然后您可以将该值放入ViewBag(or ViewData) 并在您的视图中引用它:

<head>
  @{
    var themeName = ViewBag.ThemeName;
  }
  @if (String.IsNullOrWhiteSpace(themeName)) {
    themeName = "default";
  }
  <link href="@Url.Content(String.Format("~/themes/{0}.css", themeName))" type="text/stylesheet" />
</head>
于 2012-12-18T12:33:28.050 回答
3

通常这个功能是通过多个 CSS 文件实现的,并且几乎没有(或与 .NET 无关)。

您应该以语义的方式设计您的 HTML,以便通过更改 CSS 文件,整个输出随着应用的每个 CSS 不同而不同。

此链接对该主题进行了更详细的介绍-> http://www.thesitewizard.com/css/switch-alternate-css-styles.shtml

完成此操作后,您需要在应用程序中将用户偏好(什么皮肤)存储在会话或类似内容中,并相应地更改 CSS 文件。

Asp.Net WebForms 曾经有皮肤/主题功能,但我认为它已被弃用(它不是很好),我还看到了一个实现,开发人员使用 XML 和 XSLT 文件而不是 HTML 来呈现视图(其中对我的口味来说也太复杂了)。

于 2012-12-18T12:32:58.173 回答