2015-06-04 59 views
0

目前我正在制作一个asp.net web应用程序。我有一个登录表单,我为用户创建了一个对象。我怎样才能以另一种形式访问这个对象?以多种形式使用对象

请看看我的代码:

登录形式

users user = new users(username, password); 
user.receiveUserInformation(); 

表到userpage

这是我想要的存取权限对象 “用户”。 什么是正确的方法来做到这一点。我想是这样的:

users user = new users(username, password); 
    user.receiveUserInformation(); 
    Session["new"] = user; 

然后:

Session["new"].receiveUserInformation(); 

但是,这显然是行不通的。

+0

你构建的WebForms或MVC应用程序? – Yuri

+0

这是一个webforms应用程序。但它现在起作用了。 – Jenssen

回答

3

它将工作使用会话: 只需将它转换回用户级

users newUser = (users) Session["new"]; 
+0

感谢您的回复,我如何通过构造函数以这种方式给参数username,password?像这样?:users user =(users)Session [“new”](username,password); – Jenssen

+0

不,那是不可能的,你正在创建一个新的实例,如果这样的话。什么是再次实例化的目的? – Sherlock

+0

aaah yesyes我明白它的作品现在谢谢你!但是在会话中存储密码(加密)会节省吗? – Jenssen

1

一旦把你的对象实例的会话集合中,你可以检索和重新分配新的用户实例。

if(user!=null) 
{ 
    //do stuff with user 
} 

如果:

if(Session["new"] != null) 
{ 
    users user = Session["new"] as users; 
    if(user != null) user.receiveUserInformation(); 
    .... 
} 
+0

Thankyou非常有帮助!并且效果很好。 – Jenssen

0

我会在每一页的上方为用户类

users user 
{ 
    get 
    { 
     return Session["new"] as users; 
    } 
    set 
    { 
     Session["new"] = value; 
    } 
} 

然后从该网页内的任何地方,你可以这样调用创建一个实例你不想为每个页面都这样做,你可以创建一个基类,并将实例放在那里,然后继承该类到所有页面。

public class MyBase : System.Web.UI.Page 
{ 
    users user 
    { 
     get 
     { 
      return Session["new"] as users; 
     } 
     set 
     { 
      Session["new"] = value; 
     } 
    } 
} 

然后为每个页面:

public partial class Page1: MyBase 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if(user != null) 
     { 

     } 
    } 
} 

public partial class Page2: MyBase 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     if(user != null) 
     { 

     } 
    } 
} 
在登录页面

你只需要您验证用户名后,初始化会话和重定向任何网页他们需要看到

+0

同样的故事:3 – Sherlock

+0

感谢您的解释我会试试这个! – Jenssen