2012-10-24 40 views
0

我有一个index.aspx(index.aspx.cs),它将包含使用Server.exectue(“body.aspx”)的body.aspx(body.aspx.cs);从另一页后面的代码访问变量

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Collections; 

public partial class index : System.Web.UI.Page 
{ 
    public string text1 = "abc"; 

    protected void Page_Load(object sender, EventArgs e) 
    { 


    } 

} 
在index.asp.cs

,还有就是我想在body.aspx.cs使用它的可变文本1,该怎么做?

感谢

+2

为什么不使用母版页,而不是“注入”手动一起网页? –

+1

,因为我是一名PHP程序员 – hkguile

+0

也许这是不可能的,也许它更好地遵循asp.net的方式,当你在网点上编程。 – Aristos

回答

3

我想你错误的思考ASP.NET。我想你是从Windows开始的。

ASP.NET窗体不像Windows窗体。

您必须明白,只有在请求被提供之前,ASP.NET页面才会存在。然后它“死亡”。

不能像使用Windows窗体一样将变量从/传递到页面。

如果您想访问其他页面的内容。然后,这个页面必须将这段信息存储在一个SESSION对象中,然后从另一个页面访问这个会话对象并获得你想要的值。

让我给你举个例子:

第1页:

public string text1 = "abc"; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
      Session["FirstName"] = text1; 
    } 

第2页:

protected void Page_Load(object sender, EventArgs e) 
{ 
    string text1;   
    text1 = Session["FirstName"].ToString(); 
} 

这就是你未连在一起的页面之间传递值。

此外,您可以通过修改查询字符串(将变量添加到URL)来传递值。

例子:

第1页:(按钮单击事件)

private void btnSubmit_Click(object sender, System.EventArgs e) 
{ 
    Response.Redirect("Webform2.aspx?Name=" + 
    this.txtName.Text + "&LastName=" + 
    this.txtLastName.Text); 
} 

第2页:

private void Page_Load(object sender, System.EventArgs e) 
{ 
    this.txtBox1.Text = Request.QueryString["Name"]; 
    this.txtBox2.Text = Request.QueryString["LastName"]; 
} 

这是你应该如何通过

之间的变量另外,如果您希望在您的网站的所有访问者之间分享价值。那么你应该考虑使用应用,而不是会议

我希望这有助于

+0

此外,如果您想要在您的网站的所有访问者之间共享一个值。那么你应该考虑使用Application而不是Session – Yousi

0

如果标记变量static,它就不再成为一个特定实例页面的属性,成为类型的页的属性。

然后,您可以从任何可以看到index类的地方以index.text1的身份访问它。

但是,这意味着该值将在该页面的每个实例之间共享:如果它由页面实例(或现在可以看到它的任何其他类)更改,则后续页面加载将反映改变了价值。

如果你不想要这个 - 如果这个变量在页面的每个实例之间应该是不同的 - 那么你想要的是不可能的。 ASP.NET页面不存在存在而不是由服务器生成时,所以没有页面供您从中获取该值。

如果此值永远不会更改,请将其标记为const并且您不必担心会更改它。