用ActionLink中的ActionResult重定向到新页面
本文关键字:新页面 重定向 ActionResult ActionLink 中的 | 更新日期: 2023-09-27 18:15:48
我尝试了很多方法,但都没有运气…我一定是离题太远了。
这是我的动作链接:
@Ajax.ActionLink("Delete all", "Empty",
new AjaxOptions()
{
HttpMethod = "POST",
OnBegin = String.Format("if(!confirm('Are you sure you want to permanently delete {0} items?')){{return false;}}",ViewBag.TotalItems),
OnComplete = "location.reload()",
}
和我的ActionResult,我已经尝试了所有注释掉的返回:
public ActionResult Empty()
{
//return Json(new
//{
// redirectUrl = Url.Action("Index", "Home"),
// isRedirect = true
//});
//return RedirectToRoute(new { controller = "Home", action = "Index" });
//return Redirect("http://google.ca");
return RedirectToAction("Index", "Home");
//return new JsonResult() { Data = new { redirectURL = "/" } };
}
但是我不能让它重定向到任何新的页面:/
任何帮助或指导都是感激的…
编辑:我应该注意到,我最初并没有使用"OnComplete"行,直到最近才尝试了一切。
完成你需要的一个粗略的方法是:
空函数中的,将RedirectToAction
替换为:
var redirectUrl = new UrlHelper(Request.RequestContext).Action("Index", "Home");
return Json(new { Url = redirectUrl });
在javascript中,替换
OnComplete = "location.reload()", <-- this additional comma should be removed
OnSuccess= "OnAjaxSuccess"
然后在Javascript中添加一个函数
function OnAjaxSuccess(data) {
window.location.href = data.Url;
}
您得到了响应,但是没有得到预期的响应。您对服务器进行异步调用,并且您的响应在OnSuccess函数的result参数中。
@Ajax.ActionLink("Delete all", "Empty",
new AjaxOptions()
{
HttpMethod = "POST",
OnBegin = String.Format("if(!confirm('Are you sure you want to permanently delete {0} items?')){{return false;}}",ViewBag.TotalItems),
OnComplete = "location.reload()",
OnSuccess = "Success"
}
结果在这里,在data parameter
<script>
function Success(data) {
console.log(data)
}
</script>
data参数包含Index action
返回的页面你可以尝试使用HtmlHelper而不是AjaxHelper