我想只在禁用javascript时才执行MVC操作。
为了实现这一目标,我在html中添加了一个标记<noscript>
:
<noscript>
@Html.Action("BlogRss", "Home")
</noscript>
在我的控制器中,按照操作
public PartialViewResult BlogRss()
{
return PartialView("_BlogRss", GetFeeds());
}
问题是标记<noscript>
不会影响操作的不执行。
无论是否启用了javascript,都可以完成相同的操作!
我知道如果启用JavaScript,<noscript>
内的所有内容都不会显示。
答案 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。我知道这有点不好(重定向),但我认为它是唯一的解决方案。