【问题标题】:get session class variable jquery获取会话类变量 jquery
【发布时间】:2018-01-04 17:08:05
【问题描述】:

我正在开发一个MVC 5 应用程序。

我有一个 UserLoginModel 类分配给一个 Session 变量。

public class UserLoginModel
{
  public long User_id { get; set; }
  public string Email { get; set; }
  public int Rol_id { get; set; }
  public string Name { get; set; }
  public string LastName { get; set; }
}

private const string SessionKey = "UserLogin";
private readonly HttpContext _httpContext;

public void Save(UserLoginModel user)
{
  _httpContext.Session[SessionKey] = user;
}

我需要从 jQuery 获取此 Session UserLogin.User_id 的值。我可以访问

var variable = '@Session["UserLogin"]';

但它给了我它是类数据类型的价值:

UserLoginModel

如何获得像User_id 这样的特定值?

谢谢

【问题讨论】:

    标签: jquery asp.net-mvc class session


    【解决方案1】:

    让我们从会话值分配开始:

    var variable = '@Session["UserLogin"]';
    

    根据我的测试,这个直接赋值给 JS 字符串返回了完整的类名UserLoginModel。要从会话变量中存储的模型类中提取成员类值,您需要声明局部变量以将每个成员的值保存在具有相同数据类型的视图页面中,并将会话转换为模型类名称,如下所示:

    @{
        long user_id = 0; // local variable to hold User_id value
    
        // better than using (UserLoginModel)Session["UserLogin"] which prone to NRE
        var userLogin = Session["UserLogin"] as UserLoginModel;
    
        // avoid NRE by checking against null
        if (userLogin != null)
        {
            user_id = userLogin.User_id;
        }
    }
    
    <script type="text/javascript">
        var variable = '@user_id'; // returns '1'
    </script>
    

    请注意,ViewBagViewData 和使用 @model 指令的强类型视图模型是比会话变量更可将模型值传递到视图页面的首选方式。

    现场示例:.NET Fiddle Demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 2012-02-02
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 2014-08-10
      相关资源
      最近更新 更多