ASP.NET Web表单动态地更改引导主题

时间:2015-11-06 08:31:48

标签: css asp.net asp.net-mvc bootstrapping

我的主要问题是我想通过下拉列表主题和按钮更改我网站的引导主题。

@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循环只是为了显示不同的路径。

我有一个数据库以及主题表: enter image description here

现在问题是,如何更改引导程序?

我知道有这个代码可以改变主题。

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

但它应该在_layout.cshtml文件中为整个网站设置它。

后台正在使用服务,但这并不重要。

网站截图: enter image description here

1 个答案:

答案 0 :(得分:0)

您可以编写一个操作,根据用户设置返回要使用的css文件的路径。

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

由于您无法访问布局页面中的ViewModel,因此控制器必须使用其他机制来确定调用该操作的用户。例如,我们在HttpContext.Current.Session中存储一个包含所需数据的User Context对象。这可以在登录时写入一次。然后,UserCssPath操作可以访问数据库以查找正确的CSS路径并将其返回:return Content(cssPath);