c# - 在 MVC3 中随时间动态改变主题

标签 c# css asp.net-mvc-3

大家好,我在互联网上阅读了很多关于如何在 MVC3 中动态更改主题的文章和教程。但它似乎不符合我的需要。

我已经阅读了这一堆教程
http://www.codeproject.com/Articles/171695/Dynamic-CSS-using-Razor-Engine
http://kazimanzurrashid.com/posts/asp-dot-net-mvc-theme-supported-razor-view-engine
http://www.carlj.ca/2007/11/19/dynamically-applying-themes-to-your-aspnet-site-with-a-sitemap/
http://www.dotnetfunda.com/articles/article14.aspx
http://msdn.microsoft.com/en-us/library/tx35bd89.aspx
http://www.codeproject.com/Articles/18300/How-to-change-page-theme-in-asp-net-2-0-dynamicall
还有很多但不符合我的需要T_T。

问题: 我希望我的主题 (style.css) 不时地动态变化,而无需点击任何按钮。它只是自发地改变,比如让一个主题在单个页面/ View 中更改为另一个主题 30 分钟。 (其实我什至不知道这是否可能)

到目前为止,我正在关注这个 tutorial但似乎不是一个完整的方法。

我的想法是这样的:
我希望 _Layout 中的 style.css 在 30 分钟后更改为 style2.css,然后再在 30 分钟后再次更改为 style3.css,然后再次循环回到 style.css 等等。执行此方法的最佳方法是什么?在 View 中? Controller ?查询? javascript?或任何。

我将非常感谢这里的任何建议和答案。提前致谢..

编辑2:
目前我已经从 Juann Strauss 那里收集了一个解决方案,它使用了我认为有概念的 javascript

<link rel="Stylesheet" href="@Url.Content("~/Content/style.css")" id="style" />
<script type="text/javascript">
function changetheme()
{
    alert('changing theme');
    var thestyle = document.getElementById("style");
    switch (thestyle.href)
    {
        case "@Url.Content("~/Content/style.css")":
            thestyle.href = "@Url.Content("~/Content/style2.css")";
            break;
        case "@Url.Content("~/Content/style2.css")":
            thestyle.href = "@Url.Content("~/Content/style3.css")";
            break;
        case "@Url.Content("~/Content/style3.css")":
            thestyle.href = "@Url.Content("~/Content/style.css")";
            break;
    }
}
setInterval(changetheme, (30 * 60 * 1000));


问题: case "@Url.Content("~/Content/style.css")": 显示一条绿色波浪线,表示 常规语法错误表达。我怎么可能修复它?

我有另一个解决方案,但似乎也不起作用...... T_T

代码:

<link rel="Stylesheet" href="@Url.Content("~/Content/style.css")" id="style" />
<script type="text/javascript">
function changetheme()
{
alert('changing theme');
var thestyle = document.getElementById("Site");
var href = '@Url.Content("~/")';

switch(thestyle) 
{
    case (href + '/Content/style.css'): (href + '/Content/style2.css');
        break;
    case (href + '/Content/style2.css'): (href + '/Content/style3.css');
        break;
    case (href + '/Content/style3.css'): (href + '/Content/style.css');
        break;
}
}

setInterval(changetheme, (30 * 60 * 10000 ));

最佳答案

JavaScript。创建一个函数来更改您的 css 源文件并将其超时设置为 30 分钟。如果用户在页面上停留 30 分钟,这将起作用。

如果您希望在用户浏览您的网站时发生这种情况,您将不得不将 session 开始的时间存储在 session 变量中,并输出自上次主题更改以来的分钟数作为某些动态的一部分-在前端构建javascript。

如果这还不够清楚,请告诉我,我会写一些代码。

编辑:代码

<link rel="Stylesheet" href="@Url.Content("~/Content/style.css")" id="style" />
<script type="text/javascript">
    function changetheme()
    {
        alert('changing theme');
        var thestyle = document.getElementById("style");
        switch (thestyle.href)
        {
            case "@Url.Content("~/Content/style.css")":
                thestyle.href = "@Url.Content("~/Content/style2.css")";
                break;
            case "@Url.Content("~/Content/style2.css")":
                thestyle.href = "@Url.Content("~/Content/style3.css")";
                break;
            case "@Url.Content("~/Content/style3.css")":
                thestyle.href = "@Url.Content("~/Content/style.css")";
                break;
        }
    }
    setInterval(changetheme, (30 * 60 * 1000));
</script>

关于c# - 在 MVC3 中随时间动态改变主题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14598597/

相关文章:

css - 在CSS中旋转菱形

html - 如何为某些元素自动调整 div 的大小,但让其他元素重叠它?

asp.net-mvc-3 - 在 MVC3 中相互验证模型集合

javascript - 我们可以在系统中保存 Canvas 图像,就像我们点击保存时直接下载图像一样吗?

c# - 扩展成员(member)提供者

c# - 检查列是否允许空值,C#?

c# - Async/Await 或 Task.Run 在控制台应用程序/Windows 服务中

html - 移动设备上的 Wordpress html 元素 100% 宽度

entity-framework-4 - IDbSet和通过扩展方法公开Include方法

c# - 相对于C#,Java的final类似于const或者readonly