ASP.Net MVC - 将数据从一个视图传递到另一个视图

时间:2014-05-14 19:54:16

标签: asp.net-mvc

我基本上有两个屏幕。第一个屏幕将用户名作为输入并生成密码。密码仅在30秒内有效。一旦生成密码,我需要将用户重定向到下一个屏幕,并允许他在另一个屏幕上使用该密码。我试图用密码填充用户模型对象并将其传递给scecond视图,但我的第二个视图似乎没有得到数据。请找到以下代码

        int otpass;

        bool conversion = Int32.TryParse(Encryption.GetPassword(user), out otpass);
        if (conversion)
        {
            //Save user credentials.

            userModel.Login = user;
            userModel.Otp = otpass;
            string otp1 = otpass.ToString();
            userModel.OtpCrtDate = DateTime.Now;
            ViewData["user"] = userModel.Login;

            ViewData["password"] =  Convert.ToString(otpass) ;
            ViewData["status"] = "OTP: " + otpass + " remains active just 30 seconds from now.";

            return View("Access",userModel);
            //return View("UserLogin", userModel);
        }

有人可以告诉我该如何去做吗?

1 个答案:

答案 0 :(得分:0)

最好的办法是将密码保存在您最喜欢的存储机制中。你现在可以使用一个SQL数据库,虽然像Redis或其他NoSQL支持这样的东西会长期更好。您可以存储用户名,密码和表示超时的日期时间。在验证时,您选择超时日期大于或等于现在+ 30秒的记录。

另一种替代方法是将密码存储在TempData中。请记住,TempData中的数据只会持续到下一个请求。您看起来这个工作流程至少需要3个请求(POST用户名,GET密码输入表单,POST密码),因此您需要从TempData检索/重置密码两次以保持足够长的时间。完成工作流程。同样,这不是推荐的路线。它很脏并且容易出错,但是如果你坚持要避免使用数据库,这真的是你唯一的办法。