仅在禁用javascript时执行操作

时间:2011-11-11 00:02:26

标签: javascript asp.net-mvc-3 noscript

我想只在禁用javascript时才执行MVC操作。 为了实现这一目标,我在html中添加了一个标记<noscript>

<noscript>
    @Html.Action("BlogRss", "Home")
</noscript>

在我的控制器中,按照操作

public PartialViewResult BlogRss()
{
     return PartialView("_BlogRss", GetFeeds());
}

问题是标记<noscript>不会影响操作的不执行。 无论是否启用了javascript,都可以完成相同的操作!

我知道如果启用JavaScript,<noscript>内的所有内容都不会显示。

3 个答案:

答案 0 :(得分:2)

<noscript>是HTML标记,而不是服务器标记,只能在客户端运行。服务器将始终呈现/执行您放在其中的任何代码 - 客户端不会呈现/执行它。

没有任何好方法可以检测客户端是否在服务器端启用了JavaScript。最现实的方法是使用javascript / AJAX设置隐藏值或cookie(document.cookie),然后在服务器端使用此值/ cookie。

@if (!IsJavascriptEnabled) {
    <noscript>
        @Html.Action("BlogRss", "Home")
    </noscript>
}

答案 1 :(得分:2)

如果您想要一个简单的客户端解决方案,我建议META刷新。

<noscript>
        <meta http-equiv="refresh" content="0; url=http://appUrl/BlogRss/">
</noscript>

答案 2 :(得分:0)

如果您设置默认的queryString,例如“js = disabled”,则可以实现这一点,然后只有在启用JS时才重定向到没有此变量的URL。我知道这有点不好(重定向),但我认为它是唯一的解决方案。

相关问题