发布后

时间:2015-05-28 12:37:38

标签: ajax asp.net-mvc redirect

我有一个带有窗体的视图调用控制器操作Post方法来“完成”一个包。然后,它需要刷新页面,因为它包含将在视图本身内部以及部分内部更新的信息。它确实在不同的MVC区域中使用两个不同的控制器。

邮件正常工作并发出重定向,但页面未刷新。

我已经读过,我应该在调用Complete的Ajax调用中使用OnSuccess,但我认为那是在页面调用中,而不是导航到不同页面的调用。

查看表单

@using (Ajax.BeginForm("Complete", "Packages", new { Area = "Core" },
new AjaxOptions
{
    HttpMethod = "POST"
}))

{

核心(区域)包控制器

[HttpPost]
public ActionResult Complete(int ID)
{ 
    // Update code

    // Refresh the full page

    return RedirectToAction("Summary", new { Area = "Control", id = packageBuilder.CurrentPackage.ID });
}

控制(区域)包控制器

[HttpGet]
public ActionResult Summary(int id)
{ 
    // Get Model
    return View("Summary", model);    
}

任何指针都会受到热烈欢迎。

谢谢,

克里斯。

2 个答案:

答案 0 :(得分:2)

您提交表单后未刷新页面并且浏览器未发布重定向的原因是您通过AJAX提交请求。这是幕后浏览器发出的请求。

如果您要提交表单并要刷新页面,我建议您将代码从Ajax.BeginForm(...更改为Html.BeginForm(...,然后它会加载页面并按预期执行重定向

答案 1 :(得分:0)

我不太确定你的ajax调用是如何构造的,但如果你使用的是MVC Ajax助手,你可以调用`location.reload();在OnComplete方法中,如下所示:

@using (Ajax.BeginForm(new AjaxOptions{OnComplete = "javascriptfunction"}))
{
    //Data and submit button
}
<script>
    function javascriptfunction(){
        location.reload();
    }
</script>