3

我只想在禁用 javascript 的情况下执行 MVC 操作。为了达到这个目标,我<noscript>在我的 html 中添加了一个标签:

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

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

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

问题是标签<noscript>不影响动作的不执行。无论是否启用 javascript,都一样!

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

4

3 回答 3

2

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

<noscript>
        <meta http-equiv="refresh" content="0; url=http://appUrl/BlogRss/">
</noscript>
于 2011-11-11T00:24:32.240 回答
2

<noscript>是一个 HTML 标签,而不是一个服务器标签,并且只在客户端起作用。服务器将始终呈现/执行您在它之间放置的任何代码 - 客户端不会呈现/执行它。

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

@if (!IsJavascriptEnabled) {
    <noscript>
        @Html.Action("BlogRss", "Home")
    </noscript>
}
于 2011-11-11T00:05:02.193 回答
0

如果您设置一个默认的查询字符串(如“js=disabled”),则可以实现这一点,然后仅在启用 JS 时才重定向到没有此变量的 URL。我知道这有点糟糕(重定向),但我认为这是唯一的解决方案。

于 2011-11-11T00:12:10.107 回答