提问人:Musa AKYUZ 提问时间:11/1/2023 更新时间:11/1/2023 访问量:21
在 MVC 中动态更改主题 ASP.NET
Dynamically Change Theme in ASP.NET MVC
问:
我打算根据动态切换 css 文件来更改主题。
@if (ViewBag.Theme == 1)
{
<link rel="stylesheet" href="~/css/dark-theme.css" />
}
else
{
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
}
在 Shared/_layout.cshtml 文件中:
@if (ViewBag.Theme == 1)
{
<nav class="navbar navbar-expand-lg bg-dark" data-bs-theme="dark">
<div class="container-fluid">
//....
</div>
<div class="d-flex form-check form-switch justify-content-end mx-lg-3">
<input class="btn" type="button" onclick="changeLight()" value="Light">
</div>
</nav>
}
else
{
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container-fluid">
//....
</div>
<div class="d-flex form-check form-switch justify-content-end mx-lg-3">
<input class="btn" type="button" onclick="changeDark()" value="Dark">
</div>
</nav>
}
并通过 JavaScript 和 jQuery :
function changeDark() {
$.get(`@Url.Action("ToDark", "Home")`, function(data) {
location.reload()
})
}
function changeLight() {
$.get(`@Url.Action("ToLight", "Home")`, function (data) {
location.reload()
})
}
和从控制器:
[HttpGet]
public void ToDark()
{
ViewBag.Theme = 1;
}
[HttpGet]
public void ToLight()
{
ViewBag.Theme = 0;
}
我的想法是_layout页面不会再次重新加载。只是渲染身体。如何解决这个问题?
答: 暂无答案
评论
TempData["Theme"]
ViewBag.Theme