仅在禁用javascript时执行操作

仅在禁用javascript时执行操作,javascript,asp.net-mvc-3,noscript,Javascript,Asp.net Mvc 3,Noscript,我只想在禁用javascript时执行MVC操作。 为了实现这一目标,我在html中添加了一个标记: <noscript> @Html.Action("BlogRss", "Home") </noscript> 问题在于标记不会影响操作的不执行。 无论启用或不启用javascript,都可以执行相同的操作 我知道如果启用了JavaScript,中的所有内容都不会显示。是一个HTML标记,而不是服务器标记,并且只在客户端起作用。服务器将始终呈现/执行您在服务器之间

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

<noscript>
    @Html.Action("BlogRss", "Home")
</noscript>
问题在于标记
不会影响操作的不执行。 无论启用或不启用javascript,都可以执行相同的操作

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

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

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

@if (!IsJavascriptEnabled) {
    <noscript>
        @Html.Action("BlogRss", "Home")
    </noscript>
}
@if(!IsJavascriptEnabled){
@动作(“博客”、“主页”)
}

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

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

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


服务器为什么要关心JavaScript是否被禁用?只有当JavaScript被禁用时,服务器才必须执行操作。否则它将通过JavaScriptI加载。我不明白,这是做什么的?它是如何工作的?@Riderman de Sousa Barbosa,如果客户端浏览器的javascript被禁用,它将使用执行GET Action OP Ask的URL进行刷新。是的,但我需要执行一个请求并只返回一个PartialView,而不是将整个站点重定向到新的URL。
@Html.Action(“blogross”,“Home”)
不会将整个站点重定向到新的URL@里德曼·德·苏萨·巴伯斯,如果你想看局部的话,我不知道怎么做。但我认为J.Kommer的解决方案行不通,因为当客户端浏览器禁用javascript时,无法在客户端设置隐藏值或cookie。@RayCheng从某种意义上说,你是对的,我没有检测JavaScript是否被禁用-我假设它被禁用,并检查是否使用JavaScript设置值/cookie来启用它,然后在服务器端读取。我如何在asp.net mvc中做到这一点?我在响应中使用javascript:document.cookie=c_name+“=”+c_value服务器端操作创建了它。cookie不会返回任何内容。这是正确的吗?它不会在第一个请求上返回任何内容(页面必须先转到客户端,然后JavaScript才能设置cookie),但是它会对任何后续请求起作用。
<noscript>
        <meta http-equiv="refresh" content="0; url=http://appUrl/BlogRss/">
</noscript>