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

时间:2013-09-27 07:53:50

标签: c# asp.net

公共类文件 common.cs :此文件,我已添加,点击 add-> new items->类

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");

文本框中的值存储在c.v变量

所以,现在,我想在另一个名为 ulogin.aspx.cs

的网页文件中的textbox1.text中给出的值

我使用了这段代码:

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

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

但运行后显示值为0 .....

4 个答案:

答案 0 :(得分:2)

在网络应用程序中,您需要将信息保存在常见的位置(每个用户信息通常Session或每个应用程序信息Application),以便可以在不同的页面和放大器之间使用;应用程序中的用户控件。

我建议在您的网页上添加会话支持的属性。 usercontrol访问公共会话[“变量”]。如下所示。

(即假设您的代码在点击按钮时被激活)

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 :(得分:1)

有许多用户访问同一页面,他们可能会设置不同的值,预期结果是用户在 Page 1 上设置的任何值都需要显示在第2页< /强>

任何Web技术都是无状态的,因为它们使用的HTTP再次是无状态的。

然而,有很多方法可以完成这项工作,每种方法都有各自的优势。

- 会话 -

请使用会话变量来存储您的值,这是一种变量。

每个用户都有不同的会话变量来存储,并且它是可用的  直到用户注销(即直到会话可用)

存储:服务器内存

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

        }

- 查询字符串 -

您可以使用查询字符串将值从一个页面传递到另一个页面。

Page 1

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

第2页

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

- 过帐 -

您也可以将值从一个页面发布到另一个页面。

第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

答案 2 :(得分:0)

如果页面ulogin.aspx被设计为始终从a1.aspx重定向,则在ulogin.aspx中设置PreviousPageType并通过this.PreviousPage实例获取以前的页面值。 (跨页回发)

答案 3 :(得分:0)

将成员v转换为common的属性。将common存储到Session变量中。一旦准备好获取值,就将会话变量转换为common并从那里访问v属性。