【发布时间】:2012-12-18 12:27:05
【问题描述】:
我正在使用 MVC/Razor/.Net/C#,我希望允许用户更改网站的主题,就像您可以在 microsoft windows 中更改主题一样。
有谁知道如何,或者,可以指出一些好的教程/示例的方向。
干杯
【问题讨论】:
标签: c# css asp.net-mvc razor
我正在使用 MVC/Razor/.Net/C#,我希望允许用户更改网站的主题,就像您可以在 microsoft windows 中更改主题一样。
有谁知道如何,或者,可以指出一些好的教程/示例的方向。
干杯
【问题讨论】:
标签: c# css asp.net-mvc razor
这是一个非常非常广泛的问题,有许多正确的方法。
您可以创建一个基本控制器,在每次请求期间从数据库中加载用户选择的 CSS 主题名称。然后您可以将该值放入ViewBag(或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>
【讨论】:
通常此功能是通过多个 CSS 文件实现的,并且与 .NET 几乎没有关系(或与 .NET 无关)。
您应该以语义方式设计您的 HTML,以便通过更改 CSS 文件,整个输出随着应用的每个 CSS 不同而不同。
此链接对该主题进行了更详细的介绍 -> http://www.thesitewizard.com/css/switch-alternate-css-styles.shtml
完成此操作后,您需要在应用程序中将用户偏好(什么皮肤)存储在会话或类似内容中,并相应地更改 CSS 文件。
Asp.Net WebForms 曾经有皮肤/主题功能,但我认为它已被弃用(它不是很好),我还看到了一个实现,其中开发人员使用 XML 和 XSLT 文件而不是 HTML 来呈现视图(这对我来说也太复杂了)。
【讨论】: