我想在用户选择上更改我的网页主题 我正在使用MVC3。 我的想法是在Content文件夹中包含各种样式表,让_layout.cshtml文件决定在用户选择时调用哪个css文件 目前我所能做的就是包含一个反映在所有页面上的标签 我希望视图相同,但样式表应该在选择时改变。
我在_Layout.cshtml中尝试了这段代码:
<script type="text/javascript">
function loadjscssfile(filename) {
var fileref = document.createElement("link")
fileref.setAttribute("rel", "stylesheet")
fileref.setAttribute("type", "text/css")
fileref.setAttribute("href", filename)
}
if (typeof fileref != "undefined")
document.getElementsByTagName("head")[0].appendChild(fileref)
Inside Body标签:
<select>
<option onclick="loadjscssfile("@Url.Content("~/Content/Site1.css")")">Theme1</option>
<option onclick="loadjscssfile("@Url.Content("~/Content/Site2.css")")">Theme2</option>
</select>
但这也行不通:( 请帮帮我。我是MVC3的新手......
答案 0 :(得分:1)
这篇文章可以帮到你:
ASP.NET MVC Theme Supported Razor View Engine
<强>更新强> 此示例不会使用mvc3进行编译。您应该为
做一些“查找和替换”ViewModel.Title -> ViewBag.Title
ViewModel.Message -> ViewBag.Message
ViewModel.PasswordLength -> ViewBag.PasswordLength
return new ViewEngineResult(CreateView(controllerContext, viewPath, masterPath), this, incompletMatch); -> return new ViewEngineResult(CreateView(controllerContext, viewPath, masterPath), this);
答案 1 :(得分:0)
我认为如果你保留一个样式表并且只更改你身体标签上的一个类
会更好<body class="red|blue">
//your content
</body>
并在样式表中,您只为每个选择器添加不同的样式
.red{
background-color: red;
}
.blue{
background-color: blue;
}