单页面应用程序中的RedirectToAction

时间:2015-05-05 12:30:45

标签: c# asp.net ajax asp.net-mvc single-page-application

我有一个相当简单的single-page application使用AJAX来加载和替换页面内容。应用程序应允许用户向客户添加电话号码。用户加载view以通过点击客户页面上的Ajax.ActionLink添加新电话号码后,他可以提交一个AJAX表单,其中包含要添加的号码,如果值为数字他应该被重定向回客户页面。这是我卡住的地方,如何返回另一个action的结果?似乎我不能使用RedirectToAction,因为它返回302并且浏览器发起GET请求,在我的情况下不允许使用动词,浏览器会返回{{1}结果。

所以我有两个404controllersPhoneBookController。用户加载CustomersController Customers/Details并点击调用view Ajax.ActionLink的{​​{1}},此PhoneBook/Add返回action action 1}}表单已提交至view AJAX

PhoneBook/Create

通常如何完成此类任务?

1 个答案:

答案 0 :(得分:1)

当您使用ajax时,您可以从您的操作中返回该网址并将其重定向到javascript中:

<强>控制器

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Phone ph, string Caller)
{
    if (ModelState.IsValid)
    {
        ph.Active = true;
        db.PhoneBook.Add(ph);
        db.SaveChanges();
    return Json(new { success = true, redirecturl = Url.Action("RedirectedAction") });
}

定义ActionLink时,请指定成功处理程序:

new AjaxOptions
{
     OnSuccess = "onSuccess"
}

<强>的JavaScript

function onSuccess(result) {
    if (result.success == true)
    {
        window.location = result.redirecturl;
    }
}