首页 新闻 会员 周边 捐助

MVC 跨控制器传值

0
悬赏园豆:40 [已解决问题] 解决于 2016-07-06 12:58

有两个控制器,分别为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:访问数据库失败,请联系管理员!");
        }
       }
Sola0921的主页 Sola0921 | 初学一级 | 园豆:5
提问于:2016-07-05 16:42
< >
分享
最佳答案
1

(1)Account中,返回return RedirectToAction("Index", "Home");Session保存用户名;页面上@Session["dispName"].ToString()显示用户名

(2)Account中,返回returne Redirect("/Home/Index?name=用户名"),在Index中获取参数name,可以用session也可以用viewdata保存用户名,然后页面@Viewdata显示一下就好了

收获园豆:20
弦断有谁听 | 初学一级 |园豆:20 | 2016-07-05 16:49

方法一中Session 需要在Home下的action里赋值吗?

Sola0921 | 园豆:5 (初学一级) | 2016-07-05 17:02

@Sola0921: 是的。session是公用的。

弦断有谁听 | 园豆:20 (初学一级) | 2016-07-05 17:03

@弦断有谁听: 公用的还需要赋值吗?

Sola0921 | 园豆:5 (初学一级) | 2016-07-05 17:07

@Sola0921: 所谓公用是session可以在两个Controller之间使用。在一个方法中session["name"]=""赋值,可以在其他Controller方法中使用,页面也可以;你保存的时候session name 是dipName??

弦断有谁听 | 园豆:20 (初学一级) | 2016-07-05 17:13

@弦断有谁听: 原来这个session 要一样,已经解决了非常感谢你!

Sola0921 | 园豆:5 (初学一级) | 2016-07-06 09:58
其他回答(3)
0

存session

加洲旅馆2012 | 园豆:503 (小虾三级) | 2016-07-05 17:19
1

AJax提交登录,,success function里返回用户名。location.href="/home/index?loginname=resultname";然后你的index action 里string resultname=""接收就行了,有什么问题吗?不用return  content。直接 return base.json(username)就行。

收获园豆:10
大楚打码人 | 园豆:4313 (老鸟四级) | 2016-07-05 18:15

我想这样写,可是我是初学者,我不知道json 数据在后台应该怎么写返回给SUCCESS

支持(0) 反对(0) Sola0921 | 园豆:5 (初学一级) | 2016-07-06 09:59

@Sola0921: 其实所有的一切的原理就是,你把东西给B。B拿去加工一下,返回给你。当然,返回的类型,是你和B要求的。试想一下,一个函数,无非就是处理你的业务逻辑。可返回可不返回。返回的类型又是多样化的。哪里不懂就看哪里。ActionResult ,JsonResult。等等……

支持(0) 反对(0) 大楚打码人 | 园豆:4313 (老鸟四级) | 2016-07-06 10:48
1

推荐Action返回json数据,这样比较灵活。然后将用户信息传递到前端,再次通过URL参数传递到下一个控制器中。

收获园豆:10
CodeHsu | 园豆:5668 (大侠五级) | 2016-07-05 20:22

能方便写个DEMO给我示范一下吗?我目前就是JASO如何在后台写再返回不会

支持(0) 反对(0) Sola0921 | 园豆:5 (初学一级) | 2016-07-06 10:00

@Sola0921: http://www.cnblogs.com/lmfeng/p/3596175.html

支持(0) 反对(0) CodeHsu | 园豆:5668 (大侠五级) | 2016-07-06 11:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册