【发布时间】:2015-07-01 22:12:29
【问题描述】:
我试图在 Ajax.Actionlink 调用过程中从我的控制器重定向。我有一个像这样的 Ajax.Actionlink:
@Ajax.ActionLink("Send a Project",
"RegisterAjax", "Projects",
new {id = Model.IncidentId},
new AjaxOptions {HttpMethod = "POST", UpdateTargetId = "Projectmsg_" + Model.IncidentId})
然后在我的控制器中,我有以下内容:
public ActionResult RegisterAjax(int id = 0)
{
string result = RegisterProject(id);
if (result != null)
{
return RedirectResult(result);
}
return Content("Sent...");
}
private ActionResult RedirectResult(string result)
{
throw new NotImplementedException();
}
If result != null,我已经尝试了上述方法,return Redirect(result)、return View(result) 等,但没有任何东西可以让我进入重定向的结果页面(例如 ~/Views/Manage/Location.cshtml)。我已经验证结果实际上是返回路径(通过在 return Content(result) 中返回它)。但是,当我单击超链接(即 Ajax.Actionlink)时,它完全没有响应,但我已经验证它在后台成功地完成了除了重定向之外的所有操作。
有人知道诀窍吗?非常感谢。
【问题讨论】:
-
ajax 的全部意义在于它停留在同一页面上。它不会重定向。
-
是的,那是/主要是功能。因此,它所在的父页面显示来自数据库的表/网格,并且每一行都有一个链接(Ajax.Actionlink)。以前,当您单击链接时,它会执行此操作,然后将结果发送回表格单元格,效果很好。现在,我试图通过检查用户的位置是否已设置并在未设置的情况下将它们重定向到设置的位置页面来添加更多功能(在执行 ajax 调用实际执行的任何操作之前)。但是,似乎 ajax 的返回值非常有限?
-
Ajax 的返回内容完全不受限制。您似乎误解了ajax是什么。它用于保持在同一页面上(它永远不会重定向)。如果你想重定向,做一个正常的提交,或者返回一个值,表明你想去的 url 和使用 `location.href='yourUrl';
-
我对Ajax的基本理解是,它只是简单地返回一组有限的数据而不刷新整个页面......?但是,如果数据必须传输到我的控制器,似乎我应该能够在途中的某个地方绕过整个过程?我想我误解了流程中的客户端/服务器关系以及每个人的角色/行为对于 ajax 调用是什么?
-
是的,它“将数据返回到页面”,这意味着它不会重定向到另一个页面。
标签: c# ajax asp.net-mvc