uncategorized

使用Ajax.BeginForm在Controller做頁面跳轉

MVC使用Ajax.BeginForm並且在Controller控制頁面轉跳是很常使用的,若是在Controller用return RedirectToAction(XXXX)跳轉,就會發生頁面卡著不動。

View

1
2
3
4
5
6
7
@using (Ajax.BeginForm("Login", "XXX", new AjaxOptions
{ UpdateTargetId = "ErrorMessage" }))
{
.......
<input type="submit" class="button button-green
contactSubmitButton" value="Sign On" />
}
Controller

原本使用RedirectToAction(XXXX)就會發生頁面卡住的現象,所以,Controller必須修改成這樣如下:

1
return Json(new { url = Url.Action("Main", "Main") });

而在View中也需增加下面這一段

1
2
3
4
5
6
7
<script>
var onSuccess = function (result) {
if (result.url) {
window.location.href = result.url;
}
}
</script>

再把Ajax.BeginForm增加一個OnSuccess的觸發事件就可以進行頁面跳轉了