1

私はindex.aspx(index.aspx.cs)を持っています。これにはbody.aspx(body.aspx.cs)が含まれます。Server.execute("body.aspx");

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.aspx.csには、text1body.aspx.csで使用したい変数がありますが、その方法は?

4

2 に答える 2

7

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"];
}

これは、ページ間で変数を渡す方法です

また、あなたのウェブサイトのすべての訪問者の間で価値を共有したい場合。次に、Sessionの代わりにApplicationの使用を検討する必要があります。

于 2012-10-24T08:37:17.330 に答える
1

変数をとしてマークすると、その変数はページstaticの特定のインスタンスのプロパティではなくなり、ページのタイプのプロパティになります。

index.text1その後、クラスを表示できる場所ならどこからでもアクセスできますindex

ただし、これは、値がこのページのすべてのインスタンス間で共有されることを意味します。ページのインスタンス(または現在それを表示できる他のクラス)によって変更された場合、後続のページの読み込みには変更された値が反映されます。

これが必要ない場合(この変数がページの各インスタンス間で異なる必要がある場合)、必要なことは不可能です。ASP.NETページは、サーバーによって生成されている間以外は存在しないため、この値を取得するためのページはありません

この値が変更されることを意図していない場合は、マークを付けてconstください。変更されることを心配する必要はありません。

于 2012-10-24T08:19:35.900 に答える