【问题标题】:How to get object attributes from a session如何从会话中获取对象属性
【发布时间】:2013-12-13 23:07:01
【问题描述】:

我的 asp.net C# 项目中有一个名为“admin”的类。
它是:

public class Admin
{  
    private int ID;
    private string FirstName, LastName, IsMainAdmin, Email, Username, 
            Password,BirthDate, EntryDate;  

    public int id
    {
        get { return ID; }
        set { ID = value; }
    }

    public string firstname
    {
        get { return FirstName; }
        set { FirstName = value; }
}

    public string lastname
    {
        get { return LastName; }
        set { LastName = value; }
    }
    .  
    .  
    .  

登录后创建一个会话,如下所示:

Admin admin = isAdmin(username, password);
    if (admin != null)
    {
        **Session.Add("maskanAdmin", admin);**
        Response.Redirect("panel.aspx");
    }

在其他页面中,我需要在通过 jquery ajax 进行页面请求后的代码后面部分中的会话中获取管理员 ID。
请注意,我的方法背后的代码是 [WebMethod],它不支持会话对象。
我能得到它吗?怎么样?

【问题讨论】:

标签: c# asp.net session


【解决方案1】:
var adminObj = (Admin)Session["maskanAdmin"];    
if(adminObj != null)
{
    var id = adminObj.id;
    var fname = adminObj.firstname;
}

阅读更多关于Read Values from Session State

更新

我不知道为什么问题会在一小时后更新,说您正在使用网络方法中的代码。

不过,看看Using ASP.NET Session State in a Web Service

【讨论】:

  • 您正在通过索引器访问集合查找两次。您还要检查 null 两次。那是不必要的。你可以这样做:var adminObj = (Admin)Session["maskanAdmin"]; if (adminObj != null) { ... }
  • @Silvermind:随意编辑答案:) 我不太确定。这就是为什么检查这两个地方
【解决方案2】:

当您从 Session 中检索它时,您只需将其转换回 Admin 类型的对象:

Admin admin = (Admin)Session["maskanAdmin"];

然后就可以正常使用对象的属性了:

if(admin.ID == someOtherID)
{
    // do stuff
}

【讨论】:

    【解决方案3】:
    Admin variableName = (Admin)Session["maskanAdmin"];
    

    【讨论】:

      【解决方案4】:
      var adminObj = Session["maskanAdmin"];
      if(adminObj != null)
      {
          var admin = (Admin)adminObj;
      }
      

      【讨论】:

      • Admin 是一个类,所以在强制转换之前检查 null 并不是必需的。
      • @Silvermind - 看起来我每天都能学到新东西。刚刚测试了一下,你是对的。我在想如果 adminObj 为 null 并且我尝试转换为 Admin 对象会发生转换错误。
      • null 已修复。 null 的所有内容都指向同一个位置,因此您不必害怕在这里将可以为空的对象转换为 null :)。简单的 LinqPad 示例:object a = null; string b = null; (a == b).Dump(); // True
      猜你喜欢
      • 2017-01-17
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      • 2019-04-19
      • 2023-03-09
      • 2014-08-05
      • 2017-05-04
      • 1970-01-01
      相关资源
      最近更新 更多