返回相同的视图似乎没有刷新页面

时间:2015-05-11 09:32:06

标签: model-view-controller asp.net-mvc-5

我有控制器方法,可以处理WMI类(唤醒所选机器,打开或关闭进程,启动RDP会话),然后重新加载当前视图。要重新加载,我尝试了以下内容:

    return View();
    return RedirectToAction("Index", "RenderNodesController");
    return RedirectToAction("Index");
    return Redirect(Request.UrlReferrer.ToString());

关于执行WMI调用,所有方法都成功执行,但return语句不会重新加载页面。如果我手动刷新页面,它会重新加载并按预期显示更改的信息。另外奇怪的是,如果我逐步调试调试器中的return语句,我会看到视图的Index方法执行,因此在这种情况下调试似乎没有帮助。 我会感激任何帮助。

2 个答案:

答案 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>