簡體   English   中英

使用一個aspx.cs文件中的值到另一個具有公共類的aspx.cs文件

[英]Using values from one aspx.cs file to another aspx.cs file with a common class

公共類文件common.cs :這個文件,我通過單擊add-> new items-> class添加

public class common
{
  public int v,n;
   public int da()
     {
         return n= v;
     }

}

另一個文件:它是一個網頁文件名是a1.aspx.cs:

common c = new common();

c.v = Convert.ToInt32(TextBox1.Text);
c.da();
Response.Redirect("ulogin.aspx");

文本框中的值存儲在cv變量中

那么,現在,我想在另一個名為ulogin.aspx.cs的網頁文件中的textbox1.text中給出的值

我用過這段代碼:

common d=new common();
d.da();

Label1.Text = Convert.ToString(d.n);

但運行后顯示值為0 .....

在Web應用程序,你需要堅持(通常是信息的地方常見的Session每用戶信息或Application的每個應用程序的信息),以便它可以在應用程序的不同頁面和用戶控件之間使用。

我建議在你的頁面和usercontrol中添加一個Session支持的屬性,它訪問一個公共的Session [“variable”]。 像下面這樣的東西。

(即讓我們想象您的代碼是在點擊按鈕時被激活的)

a1.aspx.cs

public int ValueToStore 
{
   get
   { 
       return Session["ValueToStore"] != null
           ? (int)Session["ValueToStore"]
           : 0
   }
   set
   {
       Session["ValueToStore"] = value;
   }
}

protected void Button1_Click(object sender, EventArgs e)
{ 
    ValueToStore = Convert.ToInt32(TextBox1.Text);
    Response.Redirect("ulogin.aspx");
}

ulogin.aspx.cs

public int ValueToStore 
{
   get
   { 
       return Session["ValueToStore"] != null
           ? (int)Session["ValueToStore"]
           : 0
   }
   set
   {
       Session["ValueToStore"] = value;
   }
}

protected void Page_Load(object sender, EventArgs e)
{
     Label1.Text = ValueToStore.ToString();
}    

如您所見,您現在在兩個頁面之間存在一些代碼重復,因此下一步將考慮實現作為公共屬性的基頁,然后從a1.aspx&ulogin.aspx繼承該基頁。

public class a1 : BasePage
{
    ...
}

public class ulogin : BasePage
{
    ...
}

public class BasePage : System.Web.Page
{
    //Put ValueToStore property here.
}

有許多用戶訪問同一頁面,可以設置不同的值,預期的結果是什么值由1需要的用戶設置要顯示在第2頁

任何Web技術都是無狀態的,因為它們使用的HTTP再次是無狀態的。

然而,有很多方法可以完成這項工作,每種方法都有各自的優勢。

--Session--

請使用會話變量來存儲您的值,這是一種變量。

每個用戶都有不同的會話變量來存儲,並且它可用直到用戶注銷(即會話可用)

存儲:服務器內存

        public class Common
        {
          public int? Data
          {
             get
             {
                if(Session["Data"]!=null)
                {
                    return  int.Parse(Session["Data"].ToString());
                }
                return null.
             }
             set
             {
               Session["Data"]=value;
             }
          }

        }

- 請求參數 -

您可以使用查詢字符串將值從一個頁面傳遞到另一個頁面。

第1頁

int value=1;
Response.Redirect("Page2.aspx?data="+value.ToString())

第2頁

if(!string.IsNullOrEmpty(Request["data"]))
{
int value=int.Parse(Request["data"]);
}

--Posting--

您還可以將值從一個頁面發布到另一個頁面。

第1頁(html)

<form action="page2.aspx" method="post">
<input type="hidden" name="data" value="1"/> 
</form>

第2頁

if(!string.IsNullOrEmpty(Request["data"]))
{
 int value=int.Parse(Request["data"]);
}

還有更多方法......你必須選擇適合你場景的方法。

閱讀ASP.NET狀態管理

http://msdn.microsoft.com/en-us/library/75x4ha6s.aspx

如果頁面ulogin.aspx被設計為始終從a1.aspx重定向,則在ulogin.aspx中設置PreviousPageType並通過this.PreviousPage實例獲取以前的頁面值。 (跨頁回發)

將成員v轉換為common的屬性。 將common存儲到Session變量中。 一旦你准備好獲取值,將會話變量轉換為common並從那里訪問v屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM