有两个控制器,分别为Login,Home,Login下Account做AJAX处理我希望用户在登录成功后进行页面跳转,同时把用户名保留下来,传送到Home下的Index控制器,在该控制器的View上显示出来。请问该怎么做?
public ActionResult Account(User u) { using (var context=new HenXinSMSContext()) { string _username = Request["UserName"]; string _password= Request["PassWord"]; var _users = context.Users; if(_users.Any()) { var _user = _users.Find(_username); if(_user==null) { return Content("no:用户名不存在!"); } else if(_user.PassWord==_password) { // TempData["ddd"] = _username; Session["UserName"] = _username; return Content("ok:/Home/Index"); //return RedirectToAction("Index","Home",new{ u=u.UserName}); //return RedirectToAction("Index","Home"); //Response.Redirect("/Home/Index"); } else { return Content("no:用户名或密码错误!"); } } } return Content("no:访问数据库失败,请联系管理员!"); } }
(1)Account中,返回return RedirectToAction("Index", "Home");Session保存用户名;页面上@Session["dispName"].ToString()显示用户名
(2)Account中,返回returne Redirect("/Home/Index?name=用户名"),在Index中获取参数name,可以用session也可以用viewdata保存用户名,然后页面@Viewdata显示一下就好了
方法一中Session 需要在Home下的action里赋值吗?
@Sola0921: 是的。session是公用的。
@弦断有谁听: 公用的还需要赋值吗?
@Sola0921: 所谓公用是session可以在两个Controller之间使用。在一个方法中session["name"]=""赋值,可以在其他Controller方法中使用,页面也可以;你保存的时候session name 是dipName??
@弦断有谁听: 原来这个session 要一样,已经解决了非常感谢你!
存session
AJax提交登录,,success function里返回用户名。location.href="/home/index?loginname=resultname";然后你的index action 里string resultname=""接收就行了,有什么问题吗?不用return content。直接 return base.json(username)就行。
我想这样写,可是我是初学者,我不知道json 数据在后台应该怎么写返回给SUCCESS
@Sola0921: 其实所有的一切的原理就是,你把东西给B。B拿去加工一下,返回给你。当然,返回的类型,是你和B要求的。试想一下,一个函数,无非就是处理你的业务逻辑。可返回可不返回。返回的类型又是多样化的。哪里不懂就看哪里。ActionResult ,JsonResult。等等……
推荐Action返回json数据,这样比较灵活。然后将用户信息传递到前端,再次通过URL参数传递到下一个控制器中。
能方便写个DEMO给我示范一下吗?我目前就是JASO如何在后台写再返回不会
@Sola0921: http://www.cnblogs.com/lmfeng/p/3596175.html