我有一个观点.当用户点击我视图中的按钮时,我试图从我的视图中获取一些数据,而不通过AJAX POST重新加载我的视图来显示一些数据.
这是我的控制器中的方法:
[HttpPost]
public JsonResult GetUserTraj()
{
var userTrajList =
DBManager.Instance.GetUserTraj(Session["UserName"].ToString());
return Json(userTrajList);
}
Run Code Online (Sandbox Code Playgroud)
这将返回Json结果.我正在尝试实现会话.因此,如果会话已过期,我希望将用户重定向到"登录"视图.在上述情况下,如果会话过期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);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试了上面的代码.但它不起作用.它不会将用户重定向到"登录"视图.我试过了return RedirectToAction("Login", "Login");.但这不起作用,因为控制器动作方法不能返回其他内容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});
}
}
Run Code Online (Sandbox Code Playgroud)
你需要写这个条件在你的Ajax成功调用里面重新加载登录界面,
if(result.code ===1){
window.location = 'yourloginpage.html'
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14718 次 |
| 最近记录: |