在asp.net中使用ViewModel登录存储值会话

在asp.net中使用ViewModel登录存储值会话,asp.net,asp.net-mvc-5,c#-2.0,Asp.net,Asp.net Mvc 5,C# 2.0,我使用UserViewModel呈现视图(登录视图和注册视图)。我有一个名为user_id的属性,我将它用作用户表中的主键 My UserViewModel.cs: public class UserViewModel { public int user_id { get; set; } //Primary Key in user table [Required] [DisplayName("Email:")] publ

我使用UserViewModel呈现视图(登录视图和注册视图)。我有一个名为user_id的属性,我将它用作用户表中的主键

My UserViewModel.cs:

public class UserViewModel
{
    public int    user_id         { get; set; } //Primary Key in user table

    [Required]
    [DisplayName("Email:")]
    public string email           { get; set; }

    [Required]
    [DisplayName("First Name:")]
    public string f_name          { get; set; }

    [Required]
    [DisplayName("Last Name:")]
    public string l_name          { get; set; }

    [Required]
    [DisplayName("Contact Number:")]
    public string contact         { get; set; }

    [Required]
    [DisplayName("Gender:")]
    public string gender          { get; set; }

    [Required]
    [DisplayName("Blood Type:")]
    public string blood_type      { get; set; }

    [Required]
    [DisplayName("Password:")]
    [DataType(DataType.Password)]
    public string password        { get; set; }

    [Required]
    [DisplayName("Confirm Password:")]
    [DataType(DataType.Password)]
    [Compare("password")]
    public string confirm_password { get; set; }
}
我的登录操作方法:

public ActionResult Login(UserViewModel uvml)
{
    
    var login = db.users.Where(a => a.email.Equals(uvml.email) && a.password.Equals(uvml.password)).FirstOrDefault();
    if (login != null)
    {        
        return RedirectToAction("Dashboard", "User");
    }
        
    return View();
}

如何在会话中存储用户id的值?

您可以通过操作方法直接访问会话:

if (login != null)
{        
  Session["user_id"] = login.user_id;  
  return RedirectToAction("Dashboard", "User");
}
if(Session["user_id"] != null)
{
    int user_id = (int) Session["user_id"];
    UserViewModel user = db.users.Where(a => a.user_id == user_id).FirstOrDefault();    
}
会话
将所有内容存储为
对象
,因此在检索时必须强制转换它。例:

int user_id = (int) Session["user_id"];
您可以使用它在另一个操作方法中检索用户:

if (login != null)
{        
  Session["user_id"] = login.user_id;  
  return RedirectToAction("Dashboard", "User");
}
if(Session["user_id"] != null)
{
    int user_id = (int) Session["user_id"];
    UserViewModel user = db.users.Where(a => a.user_id == user_id).FirstOrDefault();    
}

我可以通过:int user_id=(int)Session[“user_id”];?在其他类中使用它吗??假设我想在任何其他ViewModel中使用会话变量用于其他目的,例如查询数据库?