单页应用程序中的 RedirectToAction
RedirectToAction in a single-page application
我有一个相当简单的 single-page application
,它使用 AJAX
加载和替换页面内容。该应用程序应允许用户向客户添加 phone 个号码。用户通过单击客户页面上的 Ajax.ActionLink
加载 view
以添加新的 phone 号码后,他可以提交包含要添加的号码的 AJAX
表单,如果value 是一个数字,他应该被重定向回客户页面。这是我卡住的地方,我如何 return 另一个 action
的结果?似乎我不能使用 RedirectToAction
因为它 returns 302
并且浏览器发起了一个 GET
请求,在我的情况下这不是允许的动词,浏览器返回结果 404
。
所以我有两个 controllers
、PhoneBookController
和 CustomersController
。用户加载 Customers/Details
view
并单击 Ajax.ActionLink
调用 PhoneBook/Add
action
,这 action
return 是 view
使用 AJAX
表单提交给 PhoneBook/Create
action
.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Phone ph, string Caller)
{
if (ModelState.IsValid)
{
ph.Active = true;
db.PhoneBook.Add(ph);
db.SaveChanges();
/*->*/ return RedirectToAction("Details", "Customers", new { Id = ph.CustomerId }); //what should be used instead?
}
return PartialView("Add", ph);
}
这类任务通常是如何完成的?
当您使用 ajax 时,您可以 return 来自您的操作的 URL 并将其重定向到 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;
}
}
我有一个相当简单的 single-page application
,它使用 AJAX
加载和替换页面内容。该应用程序应允许用户向客户添加 phone 个号码。用户通过单击客户页面上的 Ajax.ActionLink
加载 view
以添加新的 phone 号码后,他可以提交包含要添加的号码的 AJAX
表单,如果value 是一个数字,他应该被重定向回客户页面。这是我卡住的地方,我如何 return 另一个 action
的结果?似乎我不能使用 RedirectToAction
因为它 returns 302
并且浏览器发起了一个 GET
请求,在我的情况下这不是允许的动词,浏览器返回结果 404
。
所以我有两个 controllers
、PhoneBookController
和 CustomersController
。用户加载 Customers/Details
view
并单击 Ajax.ActionLink
调用 PhoneBook/Add
action
,这 action
return 是 view
使用 AJAX
表单提交给 PhoneBook/Create
action
.
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(Phone ph, string Caller)
{
if (ModelState.IsValid)
{
ph.Active = true;
db.PhoneBook.Add(ph);
db.SaveChanges();
/*->*/ return RedirectToAction("Details", "Customers", new { Id = ph.CustomerId }); //what should be used instead?
}
return PartialView("Add", ph);
}
这类任务通常是如何完成的?
当您使用 ajax 时,您可以 return 来自您的操作的 URL 并将其重定向到 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;
}
}