【发布时间】:2019-12-04 11:20:42
【问题描述】:
我有一个视图,它在单击 href 时调用函数“版本”,通常返回一个“版本.cshtml”。 我修改了那个Controllerfunction: 如果我单击该链接并启用 JavaScript,它会启动一个返回 JSON 结果的 ajax 调用。它会修改 DOM,因此页面不会重新加载。现在我的问题是区分何时启用 JavaScript - 如果启用,它应该返回 JSON 结果;如果禁用它应该返回“Version.cshtml”。当我检查元素时,当 JS 被禁用时,我们已经有一个名为“nojs-noborder”的类。但是我如何在没有 JS 的情况下通过控制器获取该值,以便我可以填充 bool 'isJavaScriptenabled'?
控制器函数如下所示:
if (isJavaScriptEnabled)
{
var tocstr = ControllerContext.RenderView(PartialView("Versiontoc", model));
var middlestr = ControllerContext.RenderView(PartialView("Versionmiddle", model));
var result = new JsonResult
{
Data = new { tocstr, middlestr },
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
MaxJsonLength = MaxValue
};
return result;
}
return View("Version", model);
被检查元素中的类:
<div class="nojs-noborder" id="contentwrapper">
【问题讨论】:
-
浏览器必须将该信息作为请求中的参数发送。服务器无法访问浏览器的设置以了解启用或未启用的内容。事实上,服务器甚至不知道(或关心)请求是来自浏览器还是来自其他类型的 HTTP 客户端。
-
老实说,虽然我认为您应该为此设置两种不同的操作方法,并让前端决定在每种情况下调用哪一种。拥有一个返回两种完全不同类型的内容的端点有点反模式恕我直言。
标签: javascript html asp.net-mvc noscript