我有一个相当简单的single-page application
使用AJAX
来加载和替换页面内容。应用程序应允许用户向客户添加电话号码。用户加载view
以通过点击客户页面上的Ajax.ActionLink
添加新电话号码后,他可以提交一个AJAX
表单,其中包含要添加的号码,如果值为数字他应该被重定向回客户页面。这是我卡住的地方,如何返回另一个action
的结果?似乎我不能使用RedirectToAction
,因为它返回302
并且浏览器发起GET
请求,在我的情况下不允许使用动词,浏览器会返回{{1}结果。
所以我有两个404
,controllers
和PhoneBookController
。用户加载CustomersController
Customers/Details
并点击调用view
Ajax.ActionLink
的{{1}},此PhoneBook/Add
返回action
action
1}}表单已提交至view
AJAX
。
PhoneBook/Create
通常如何完成此类任务?
答案 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;
}
}