我有控制器方法,可以处理WMI类(唤醒所选机器,打开或关闭进程,启动RDP会话),然后重新加载当前视图。要重新加载,我尝试了以下内容:
return View();
return RedirectToAction("Index", "RenderNodesController");
return RedirectToAction("Index");
return Redirect(Request.UrlReferrer.ToString());
关于执行WMI调用,所有方法都成功执行,但return语句不会重新加载页面。如果我手动刷新页面,它会重新加载并按预期显示更改的信息。另外奇怪的是,如果我逐步调试调试器中的return语句,我会看到视图的Index方法执行,因此在这种情况下调试似乎没有帮助。 我会感激任何帮助。
答案 0 :(得分:2)
只是想为这个答案添加一些解释:
因为您正在执行AJAX请求,所以它不会在成功时重新加载用户的浏览器页面,它只会返回在result参数中调用的action方法的结果。 $ .post是$ .ajax的简写版本,因此行为将是相同的。
解决方案:
例如location.reload(true)
(正如您所做的那样)。
答案 1 :(得分:0)
我仍然不知道为什么 return View(); 和类似的不执行,但最后我使用Javascript的window.location.reload(),完整性下面的完整脚本工作:
<script type="text/javascript">
$(document).ready(function () {
$('.checkbox').click(function () {
var url = '@Url.Action("CallProcess", "RenderNodes")';
var networkname = $(this).data("networkname");
var processname = $(this).data("processname");
var filename = $(this).data("filename");
var start = $(this).is(':checked');
$.post(url, { NetworkName: networkname, ProcessName: processname, FileName: filename, Start: start },
function (data) {
$("#CallProcess").html(data);
});
window.location.reload(true);
})
});
</script>