2015-11-06 3 views
0

моей главной проблемой является то, что я хочу изменить тему начальной загрузки моего сайта с раскрывающимся списком тем и кнопкой.ASP.NET веб-формы меняют тему бутстрапа динамически

@model IEnumerable<ProjectManagementTool.ServiceReference1.Theme> 
@{ 
    ViewBag.Title = "Settings"; 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

<form action="/Home/Settings" method="get"> 

    <h2>Settings</h2> 
    <br /> 

    <h4>Change Theme</h4> 
    @Html.DropDownList("GetThemes", null, htmlAttributes: new { @class = "form-control" }) 
    <br /> 
    <p> 
     <input class="btn btn-default" type="submit" value="Save"/> 
    </p> 

@foreach (var item in Model) 
{ 
    @Html.DisplayFor(modelItem => item.Path) 
    <br/> 
} 


</form> 

Цикл foreach - это просто показать разные пути.

У меня есть база данных Aswell с таблицей тема: enter image description here

Теперь вопрос, как я могу изменить загрузчик?

Я знаю, что есть этот код, чтобы изменить тему.

@Styles.Render("~/Content/flatly.bootstrap.css") 

Но это должно быть в файле _layout.cshtml, чтобы установить его для всего сайта.

Фон работает со службой, но здесь это не важно.

Скриншот сайта: enter image description here

ответ

0

Вы могли бы написать действие, которое возвращает путь к файлу CSS, который будет использоваться в зависимости от настроек пользователя.

Что-то вдоль линий

@Styles.Render(Html.Action("UserCssPath", "Settings").ToString()); 

Потому что у вас нет доступа к ViewModel в вашей странице макета, контроллер должны использовать другой механизм, чтобы выяснить, какой пользователь было вызвано действие. Например, мы сохраняем объект User Context с необходимыми данными в HttpContext.Current.Session. Это можно было бы написать один раз при входе в систему. Действие UserCssPath может затем получить доступ к БД, чтобы найти правильный путь CSS и вернуть его: return Content(cssPath);

Смежные вопросы