2015-06-04 57 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