我有一个带有窗体的视图调用控制器操作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);
}
任何指针都会受到热烈欢迎。
谢谢,
克里斯。
答案 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>