2012-03-02 23 views
0

我想在用户选择中更改我的网页的主题 我正在使用MVC3。 我的想法是在Content文件夹中包含各种样式表,并让_layout.cshtml文件决定在用户​​选择时调用哪个css文件 目前我所能做的就是包含一个反映在所有页面上的单个标签 希望视图相同,但样式表应该在选择时改变。如何在mvc3中动态更改主题

我想这里面的代码_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) 

体内标签:

<select> 
     <option onclick="loadjscssfile("@Url.Content("~/Content/Site1.css")")">Theme1</option> 
     <option onclick="loadjscssfile("@Url.Content("~/Content/Site2.css")")">Theme2</option> 
     </select> 

但这也不起作用:( 请帮助我,我是新来的MVC3。 ..

回答

1

这篇文章应该可以帮助您:

ASP.NET MVC Theme Supported Razor View Engine

UPDATE: 此样品不会用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); 
+0

嗨,我已经通过这个链接,也下载了整个zip文件,但一旦我运行它给了我错误:ViewModel不存在于当前的情况下,我不知道ViewModels – EqEdi 2012-03-02 06:35:54

+1

如果你需要更强大的他妈的你也可以尝试我的CavemanTools Mvc工具包(nuget它)。看看如何在这里使用主题https://bitbucket.org/sapiensworks/caveman-tools/wiki/Themes – MikeSW 2012-03-02 06:47:35

+0

已更新的答案。编辑后编译并在我的机器上使用MVC3 – Iridio 2012-03-02 07:09:43

0

我认为如果你保留一个样式表并且只更改你的身体标签上的一个类别会更好

<body class="red|blue"> 
    //your content 
</body> 

和样式表里面你只能各选择不同的样式添加

.red{ 
    background-color: red; 
} 

.blue{ 
    background-color: blue; 
} 
+0

thanx的答复,但我应该如何改变颜色动态whethr我应该包括控制器内部的一些开关逻辑是什么? – EqEdi 2012-03-02 05:59:58