1

共通クラス ファイルcommon.cs : このファイルは、 add- >new items-> classをクリックして追加しました

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

}

別のファイル: Web ページのファイル名はa1.aspx.cs です。

common c = new common();

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

テキスト ボックスの値は cv 変数に格納されます

だから、今、ulogin.aspx.csという名前の別のWebページファイルのtextbox1.textで指定された値が必要です

私はこのコードを使用しました:

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

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

しかし、実行後、値は0として表示されます.....

4

4 に答える 4

2

Web アプリケーションでは、アプリケーション内の異なるページとユーザー コントロール間で使用できるように、共通の場所 (通常Sessionはユーザー情報Applicationごとまたはアプリケーション情報ごと) に情報を永続化する必要があります。

共通のセッション[「変数」]にアクセスするページとユーザーコントロールに、セッションに基づくプロパティを追加することをお勧めします。以下のようなもの。

(つまり、ボタンのクリックでコードが実行されたと想像してください)

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();
}    

ご覧のとおり、2 つのページ間でコードが重複しているため、次のステップでは、共通プロパティとしてベースページを実装することを検討し、それを a1.aspx および ulogin.aspx から継承します。

すなわち

public class a1 : BasePage
{
    ...
}

public class ulogin : BasePage
{
    ...
}

public class BasePage : System.Web.Page
{
    //Put ValueToStore property here.
}
于 2013-09-27T08:18:15.850 に答える
1

多くのユーザーが同じページにアクセスし、異なる値を設定する可能性があり、予想される結果は、Page 1でユーザーが設定した値がPage 2に表示される必要があることです。

再びステートレスである HTTP を使用するため、すべての Web テクノロジはステートレスです。

ただし、これを行うには多くの方法があり、それぞれの方法には独自の利点があります。

- セッション -

変数の一種であるセッション変数を使用して値を保存してください。

各ユーザーには、保存する異なるセッション変数があり、ユーザーがログアウトするまで (つまり、セッションが利用可能になるまで) 利用可能です。

ストレージ: サーバー メモリ

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

--掲載中--

あるページから別のページに値を投稿することもできます。

ページ 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

于 2013-09-27T08:17:33.267 に答える
0

メンバー v を common のプロパティに変換します。共通をセッション変数に格納します。値を取得する準備ができたら、セッション変数を common にキャストし、そこから v プロパティにアクセスします。

于 2013-09-27T09:30:18.390 に答える
0

ページ ulogin.aspx が常に a1.aspx からリダイレクトされるように設計されている場合は、ulogin.aspx で PreviousPageType を設定し、this.PreviousPage インスタンスによって前のページの値を取得します。(クロスページポストバック)

于 2013-09-27T08:20:06.443 に答える