我有一个视图和一个表单,它调用控制器动作Post方法来“完成”一个包。然后,它需要刷新页面its,因为它包含将在视图本身和部分中更新的信息。它确实在不同的MVC区域使用两个不同的控制器。
Post工作正常,重定向被发出,但是页面没有刷新。
我已经读过了,我应该在调用完成的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);
}任何指示都将受到热烈欢迎。
谢谢,
克里斯。
发布于 2015-05-28 12:51:41
提交表单并没有发出重定向之后,页面没有刷新,原因是您通过AJAX提交请求。这是浏览器在幕后发出的请求。
如果您想提交表单并刷新页面,我建议将代码从Ajax.BeginForm(...更改为Html.BeginForm(...,然后它将加载页面并按预期执行重定向。
发布于 2015-05-28 14:10:58
我不太清楚您的ajax调用是如何构造的,但是如果您使用的是MVC Ajax助手,您只需在OnComplete方法中调用OnComplete(),如下所示:
@using (Ajax.BeginForm(new AjaxOptions{OnComplete = "javascriptfunction"}))
{
//Data and submit button
}
<script>
function javascriptfunction(){
location.reload();
}
</script>https://stackoverflow.com/questions/30506822
复制相似问题