gpt4 book ai didi

c# - 使用 JsonResult 重定向到操作

转载 作者:太空狗 更新时间:2023-10-30 00:18:13 25 4
gpt4 key购买 nike

我有一个观点。当用户单击我 View 中的按钮时,我试图从我的 View 中获取一些数据,而无需通过 AJAX POST 重新加载我的 View 以显示一些数据。

这是我 Controller 中的方法:

[HttpPost]
public JsonResult GetUserTraj()
{
var userTrajList =
DBManager.Instance.GetUserTraj(Session["UserName"].ToString());
return Json(userTrajList);
}

这将返回一个 Json 结果。我现在正在尝试实现 session 。因此,如果 session 已过期,我希望将用户重定向到登录 View 。在上述情况下,如果 session 过期,Session["UserName"] 变为 null 并引发异常。

[HttpPost]
public JsonResult GetUserTraj()
{
if (Session["UserName"] != null)
{
var userTrajList =
DBManager.Instance.GetUserTraj(Session["UserName"].ToString());
return Json(userTrajList);
}
else
{
RedirectToAction("Login", "Login");
return Json(null);
}
}

我试过上面的代码。但它不起作用。它不会将用户重定向到登录 View 。我尝试了 return RedirectToAction("Login", "Login");。但这不起作用,因为 Controller 操作方法不能返回 JsonResult 以外的内容。请帮助我找到相同的解决方案。

最佳答案

如果您使用 AJAX 请求页面,则无法在浏览器中重定向。你应该响应一个状态码,然后使用javascript在前面重定向,就像这样

[HttpPost]
public JsonResult GetUserTraj()
{
if (Session["UserName"] != null)
{
var userTrajList =
DBManager.Instance.GetUserTraj(Session["UserName"].ToString());
return Json(userTrajList);
}
else
{
//RedirectToAction("Login", "Login");
return Json(new {code=1});
}
}

您需要在 Ajax 成功调用内部写入此条件以重新加载登录屏幕,

if(result.code ===1){
window.location = 'yourloginpage.html'
}

关于c# - 使用 JsonResult 重定向到操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40734296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com