如何创建一个返回 ResponseRedirect 的控制器函数,而不是将该 ResponseRedirect 作为 Json 对象返回?
我想做这样的事情
return Json(new { url = RedirectToAction("AccountMyProducts", "Account"), redirect = "true" });
在我的 jsonobject 中获取重定向 url。
如何创建一个返回 ResponseRedirect 的控制器函数,而不是将该 ResponseRedirect 作为 Json 对象返回?
我想做这样的事情
return Json(new { url = RedirectToAction("AccountMyProducts", "Account"), redirect = "true" });
在我的 jsonobject 中获取重定向 url。
这样做
return Json(data, JsonRequestBehavior.AllowGet);
解释:函数返回JsonResult的类型,由ActionResult继承。
JsonRequestBehavior.AllowGet
:这是为了防止针对使用 HTTP GET 返回数据的 JSON 请求的非常具体的攻击。
基本上,如果您的操作方法不返回敏感数据,那么允许获取应该是安全的。
但是,MVC 将其与 DenyGet 作为默认设置来保护您免受此攻击。它让您在决定通过 HTTP GET 公开数据之前考虑所公开数据的含义
如果您打算基于 json 数据进行重定向
return Json(new
{
redirectUrl = Url.Action("AccountMyProducts", "Account"),
isredirection= true
});
在 Jquery 成功回调函数中,这样做
$.ajax({
.... //some other stuffs including url, type, content type.
//then for success function.
success: function(json) {
if (json.isredirection) {
window.location.href = json.redirectUrl;
}
}
});
你可以试试这个:
return Json(new { url = "Account/AccountMyProducts", redirect = "true" });
值得注意的是,RedirectToAction(...)
返回 aRedirectToRouteResult
由调用控制器操作的方法评估,而不是立即返回实际 URL。