我有一个正在努力解决的问题。一些背景:用户可以在我的应用程序中选择应用程序使用哪种配色方案,此选择存储在数据库中。
我想做的是基于这个选择,在页面加载时,为用户所做的选择提供 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()" />
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)