То, что я пытаюсь сделать, это изменить тему приложения с помощью флажка, который заполняется как темный или светлый из сеанса сервера.
Я знаю, что тему (таблицу стилей) можно изменить с помощью JavaScript, но это приводит к загрузке таблицы стилей по умолчанию Bootstrap, а затем темной, которая вызывает мерцание экрана.
Что мне нужно сделать, это вернуть css с сервера, который думал, что метод post, как показано ниже.
<div>
<form id="theme-switcher" method="post">
<div class="custom-control custom-switch">
<input type="checkbox" class="custom-control-input" asp-for="IsDark" id="theme" />
<label class="custom-control-label" for="theme">Theme</label>
</div>
<button id="change" type="submit" class="btn btn-primary">Change</button>
</form>
</div>
Код выше может быть в компоненте представления или частичном представлении, но Кажется, я не могу найти способ публикации из.
_Layout.cs html
@{
bool isDark = HttpContext.HttpContext.Session.GetBoolean("IsDark");
}
<!-- Custom styles -->
@if (CultureInfo.CurrentUICulture.Name == "ar-LB")
{
if (isDark)
{
<link rel="stylesheet" type="text/css" href="~/css/site-dark-rtl.css">
}
else
{
<link rel="stylesheet" type="text/css" href="~/css/site-rtl.css">
}
}
else
{
if (isDark)
{
<link rel="stylesheet" type="text/css" href="~/css/site-dark.css">
}
else
{
<link rel="stylesheet" type="text/css" href="~/css/site.css">
}
}
То, что я до сих пор связывал, - это частичные представления и просматривать компоненты, но, насколько я обнаружил, частичные представления не могут иметь код с OnPost (при добавлении @ page в частичное представление я получаю данные представления не могут быть нулевыми, хотя данные модели и представления установлены), а компоненты представления не могут вызывать методы.
Какой подход следует использовать?