Web Program で Transfer を使って次のステージにリンク

Web Program でボタンをクリックすると Server.Transfer で次のステージを呼び出します。
移動したステージからボタンをクリックすると、元のページに戻ります。

前田稔(Maeda Minoru)の超初心者のプログラム入門

呼び出し側のページ

  1. Visual Studio .NET2005 を起動します。
    ファイル/新規作成/プロジェクト/Visual C#/ASP.NET Webアプリケーションから新規のプロジェクト(Web)を作成します。
  2. 自動的にテンプレートに基づいて、幾つかのファイルが作成されます。
  3. タブをデザイン画面に切り替えて、ツールボックスから [TextBox] を貼り付けます。
  4. 続いて [Button] を貼り付けます。
  5. Button をダブルクリックして、ソースコードを表示します。
  6. ソリューションエクスプローラの Default.aspx を Web_1.aspx に変更します。
  7. この段階で一旦プロジェクトを終了します。

呼び出されるページ

  1. Web のプロジェクトでは、一個のプロジェクトに沢山の Web Source を格納することが出来ます。
    今回は、呼び出す側のソース(Web_1) と 呼び出される側のソース(Web_2) を同じプロジェクトに格納します。
  2. エクスプローラ(ファイラー)で、次のファイルをコピーして名前を変えて保存して下さい。
    Wab_1.aspx Wab_2.aspx
    Wab_1.aspx.cs Wab_2.aspx.cs
    Wab_1.aspx.designer.cs Wab_2.aspx.designer.cs
  3. メモ帳(Text Editor) で次の修正を行います。
    コードが Shift-JIS と違い文字化けするかも知れませんが気にしないで下さい。
    1. Web_2.aspx の先頭行の "Wab_1.aspx.cs" を "Wab_2.aspx.cs" に変更します。
    2. "Redirect._Default" を "Redirect._Default2" に変更します。
      Default2 は Web_2 の Object Class です。
    3. Web_2.aspx.cs の Object Class 名を "_Default2" に変更します。
    4. Web_2.aspx.designer.cs の Object Class 名を "_Default2" に変更します。
  4. 再びプロジェクトを起動します。
  5. プロジェクト/既存項目の追加から Wav_2.aspx, Wav_2.aspx.cs, Wav_2.aspx.designer.cs のファイルを追加します。
    ソリューションエクスプローラに Wav_2 のフォルダーが追加されます。
  6. この状態で Debug をクリックして、エラーが発生しないことを確認して下さい。

ソースコードの完成

  1. Wab_1.aspx.cs の Button1_Click に web_2 を呼び出すソースコードを追加します。
        protected void Button1_Click(object sender, EventArgs e)
        {
            Context.Items.Add("User",TextBox1.Text);
            Server.Transfer("web_2.aspx");
        }
        
  2. Wab_2.aspx.cs の Page_Load に User を表示するソースコードを追加します。
        protected void Page_Load(object sender, EventArgs e)
        {   if(!IsPostBack)
            {
                TextBox1.Text = (string)Context.Items["User"];
            }
        }
        
  3. Wab2.aspx.cs の Button1_Click に web1 の戻るソースコードを追加します。
        protected void Button1_Click(object sender, EventArgs e)
        {
            Server.Transfer("web_1.aspx");
        }
        
  4. Wab_2.aspx.cs の Button2_Click に User を取得するコードを追加してみました。
    残念ながら User を取得出来るのは最初に呼ばれたときだけで、ポスバックされたときは取得出来ないようです。
        protected void Button2_Click(object sender, EventArgs e)
        {
            TextBox2.Text = (string)Context.Items["User"];
        }
        
  5. Web_1.aspx を選択して Debug をクリックして下さい。
    Web_1 の画面が表示されたら TextBox に UserID をタイプして Button をクリックすると Web_2 にリンクします。
    Web_2 の画面から Button をクリックすると Web_1 に戻ります。

超初心者のプログラム入門(C# on-line game)