ASP.NET WEB FORMS は、開発者に優れたイベント駆動型開発モデルを提供します。ただし、この単純なアプリケーション開発モデルでは、いくつかの小さな問題が発生しました。たとえば、従来の ASP アプリケーションでは、POST メソッド (request()/) を介して 1 つまたは複数の値をページから簡単に転送できます。 request.form()/request.querystring())と同じ方法でASP.NETに実装するのは少し面倒です。この状況を解決する他の方法を次に示します。 ASP.NET では 3 つの方法が提供されています。1 つは QueryString を使用して対応する値を送信する方法、もう 1 つはセッション変数を通じて対応する値を送信する方法、もう 1 つは Server.Transfer メソッドを通じて実装する方法です。
1. クエリ文字列を使用する
クエリ文字列は値を渡すための非常に単純な方法ですが、その欠点は、送信される値がブラウザのアドレス バーに表示され、このメソッドではオブジェクトを渡すことができないことです。このメソッドは、それほど重要ではない値または単純な値を渡す場合に最適です。小さな例を使用して、値の転送作業を完了してみましょう。手順は次のとおりです。
1.Webフォームを作成する
2. 新しい Web フォームに button1 と 2 つの TextBox1 と TextBox2 を配置します。
3. 次のように、ボタン ボタンのクリック イベント コードを作成します。
private void button_click(オブジェクト送信者,System.EventArgs e)
{
文字列 URL;
url="webform2.aspx?name="+TextBox1.Text + "&Email="+TextBox2.Text;
応答.リダイレクト(url);
}
4. 新しいターゲット ページを作成し、webform2 という名前を付けます。
5. webform2 に 2 つの Label1 と Label2 を配置します。
webform2 の Page_Load に次のコードを追加します。
private void Page_Load(オブジェクト送信者,System.EventArgs e)
{
Label1.Text=Request.QueryString["名前"];
Label2.Text=Request.QueryString["メール"];
}
実行すると、転送後の結果が表示されます。
2. セッション変数を使用します。セッション変数を使用して値を渡すのが最も一般的な方法です。この方法は、値を次のページに渡すだけでなく、セッション変数の値が完全に一致するまで複数のページに渡すこともできます。変数は削除されます。例を挙げてみましょう:
1.Webフォームを作成する
2. 新しい Web フォームに button1 と 2 つの TextBox1 と TextBox2 を配置します。
3. 次のように、ボタン ボタンのクリック イベント コードを作成します。
private void button_click(オブジェクト送信者,System.EventArgs e)
{
セッション["名前"]=TextBox1.Text;
Session["電子メール"]=TextBox2.Text;
Response.Redirect("webform2.aspx");
}
4. 新しいターゲット ページを作成し、webform2 という名前を付けます。
5. webform2 に 2 つの Label1 と Label2 を配置します。
webform2 の Page_Load に次のコードを追加します。
private void Page_Load(オブジェクト送信者,System.EventArgs e)
{
Label1.Text=Session["名前"].ToString();
Label2.Text=Session["電子メール"].ToString();
Session.Remove("名前");
Session.Remove("電子メール");
}
実行すると、転送後の結果が表示されます。
3. Server.Transfer を使用する
この方法は少し複雑ですが、それでもページ上で値を渡す方法です。
例を挙げてみましょう:
1.Webフォームを作成する
2. 新しい Web フォームに button1 と 2 つの TextBox1 と TextBox2 を配置します。
3. 次のように、ボタン ボタンのクリック イベント コードを作成します。
private void (オブジェクト送信者,System.EventArgs e)
{
Server.Transfer("webform2.aspx");
}
4. 次のように、TextBox1 および TextBox2 コントロールの値コードを返すプロセスを作成します。
パブリック文字列名
{
get {return TextBox1.Text;}
}
パブリック文字列メール
{
get{TextBox2.Text を返す;}
}
5. webform2 という名前の新しいターゲット ページを作成します。
6. webform2 に 2 つの Label1 と Label2 を配置します。
webform2 の Page_Load に次のコードを追加します。
private void Page_load(オブジェクト送信者,System.EventArgs e)
{
//Webフォームのインスタンスを作成する
ウェブフォーム1 wf1;
//インスタンス化されたハンドルを取得する
wf1=(webform1)Context.Handler;
ラベル1.テキスト=wf1.名前;
ラベル2.テキスト=wf1.メール;
}
この 3 つの方法が一般的です。