css - ASP.NET Core 2.1 根据 DB 中的数据在布局中插入 CSS
问题描述
我有一个我正在努力解决的问题。一些背景:用户可以在我的应用程序中选择应用程序使用的配色方案,这个选择存储在数据库中。
我想要做的是基于这个选择,在页面加载时,为用户做出的选择提供 CSS 文件。
我一直在尝试做的是通过在 _Layout.cshtml 页面中执行 AJAX 请求来检查用户的选择,并将适当的 CSS 附加到标题中。这是可行的,但不是很好,因为有一些延迟,而且它不是一个好的解决方案,因为有时元素的某些样式在加载 CSS 后不正确。
我想做的是在服务器端做这个检查,就像控制器中的普通视图一样(布局页面缺少你知道的控制器,所以这就是我卡住的地方)。然后在 _Layout 视图中添加正确的 CSS。
所以亲爱的堆栈溢出者,你对我有什么建议可以实现吗?我的用户需要那种甜蜜甜蜜的黑暗主题。;)
提前致谢!
解决方案
创建服务
public class ThemeService
{
private readonly MyDbContext _dbContext;
private readonly IMemoryCache _memoryCache;
public ThemeService(MyDbContext dbContext, IMemoryCache memoryCache)
{
//Here you can also inject the UserManager<T> if needed
_dbContext = dbContext;
_memoryCache = memoryCache;
}
public string GetTheme()
{
throw new NotImplementedException();
}
}
并将其注册到服务容器scoped
(因为您需要DbContext
):
services.AddScoped<ThemeService, ThemeService>();
在你看来,只需注入它
@inject ThemeService ThemeService;
后来在视图中:
<link type="text/css" href="@ThemeService.GetTheme()" />
推荐阅读
- macos - Flutter 无法运行,get_navigation & 主题错误
- windows - 外壳 | 在目录中按名称(Name.txt/Name(01).txt/Name(02).txt)查找类似文件,并删除除上次修改外的所有文件
- javascript - 为什么我在 componentDidMount 中的操作调用后 redux 状态未定义?
- python - 如何访问自定义对象列表中的字典值?
- jmeter - JMeter 报告显示一个请求的 3 个结果
- php - 无法在共享主机上通过 php 运行 bash 脚本
- powershell - 找不到“XmlMessageFormatter”的重载和参数计数:Powershell 中的 N 和 New-Object
- c - 在具有最新 XCode 的 MacOS Catalina 上,__DARWIN_C_LEVEL 对于 String.h 来说太低了……我该怎么办?
- docker - Debian 的 zic 缺少 -b 选项
- python - 如何允许客户端连接到 python 服务器?