Web上の別画面から別画面へ情報を表示

タグの編集
投稿者 あきこ  (高校生) 投稿日時 2012/2/18 08:00:36
Web上で、変数(テキストボックス)+変数(テキストボックス)=ボタンと表示し、ボタンクリックで別のWeb上のテキストボックス内に答えだけを表示したいです。テキストボックス内の変数の受け渡しは分かっていますが、答えのみの表示を別の画面でするには、どうしたらよいでしょうか?今、高校3年で、ITの勉強しに大学に行きます。なので最近プログラミングの勉強を始めて、このサイトで勉強しています。よろしくお願いします。
投稿者 ラオシス  (中学生) 投稿日時 2012/2/18 14:29:51
最近プログラミングを勉強されているみたいですが・・・。

情報をもう少し具体的にしましょう。
・開発環境(バージョン、名前など)
・自分が何をしたいのか
・もしあればそれに関して自分が書いたコード、行おうとした解決策

>Web上
Web Developerのほうで開発されていますか?
もしくはHTML、Java Scriptですか?
このサイトで勉強されていると聞きますが、るきおさんはWeb関係ではHTML講座のみ公開していますが・・・。

>変数(テキストボックス)+変数(テキストボックス)=ボタン
合計をもとめるということでしょうか?

>今、高校3年で、ITの勉強しに大学に行きます
頑張ってください。
投稿者 あきこ  (その他) 投稿日時 2012/2/18 16:38:59
ラオシスさん、ご返答有難うございました。
情報が足りず申し訳ありませんでした。
私は今、visual studio 2010からvisual basic/ web/ ASP.net web applicationを使用してます。

るきおさんが使って説明されているのはWindows フォーム アプリケーションですが、
裏のコードのほうを参考にしています。

まず、私は、Page1からの情報をPage2で受け取りたいです。
今、行っているのは、
[Page1.aspx]

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Page1</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="txtValue1" runat="server"></asp:TextBox>
        +
        <asp:TextBox ID="txtValue2" runat="server"></asp:TextBox>
        <br /><br />
        <asp:Button ID="btnCalculatel" runat="server" Text="Calculate" /> 
        <br /><br />
        <asp:TextBox ID="txtAnswerValue" runat="server"></asp:TextBox>
        <br /><br />
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" 
            PostBackUrl="~/Page2.aspx" />
    </div>
    </form>
</body>
</html>

[Page1.asp.vb]

Public Class Page1
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    End Sub


    Protected Sub btnCalculatel_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnCalculate.Click
        Dim X As Decimal
        Dim Y As Decimal


        X = txtValue1.Text()
        Y = txtValue2.Text()
        txtAnswerValue.Text = X + Y

    End Sub
End Class

以上のコードで変数を2つ入力すると、Caluculaで計算結果がテキストボックスに出力される。

その後SubmitボタンでPage2に答えを送信する

[Page2.aspx]

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:TextBox ID="txtAnswer1" runat="server"></asp:TextBox>
    </div>
    </form>
</body>
</html>

[Page2.aspx.vb]
Public Class Page2
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not Me.Page.PreviousPage Is Nothing Then
            Dim text1 As TextBox _
                = CType(Me.Page.PreviousPage.FindControl("txtAnswerValue"), TextBox)
            If Not text1 Is Nothing Then
                Me.txtAnswer1.Text = text1.Text
            End If


        End If
    End Sub

End Class

となると、Page2にtxtAnswerValue(計算結果)の値が表示されます。
しかし、私が行いたいことは、
Page1に計算結果を表示せず
Page1のSubmitボタンをクリックするとPage2に計算結果が表示されるようにしたいです。

説明が下手ですいません。
どの構文を使えばよいなどでもかまいませんので、
また、お答えいただければうれしいです。よろしくお願いします。
投稿者 ラオシス  (中学生) 投稿日時 2012/2/19 22:16:49
>ASP.net web application
Web Developerでしょう。

>Page1からの情報をPage2で受け取りたいです。
Web Developerに関しては知識が疎いため、考えだけ載せておきます
Page2へ引数で情報を渡して、Page2で受け取って表示するのがよろしいかと思います。

ASP.NET/Getで渡したパラメータを取得する
http://yakinikunotare.boo.jp/orebase/index.php?ASP.NET%2FGet%A4%C7%C5%CF%A4%B7%A4%BF%A5%D1%A5%E9%A5%E1%A1%BC%A5%BF%A4%F2%BC%E8%C6%C0%A4%B9%A4%EB

おそらくこれで可能かと。C#ですが、VBに翻訳できます。

それか、VisibleでTextBoxを隠すのもありかと思います。
Control.Visible プロパティ(System.Web.UI名前空間)
http://msdn.microsoft.com/ja-jp/library/system.web.ui.control.visible.aspx

こちらは本格的なプログラムで実際に使うときは使用しないほうがいいです。
投稿者 るきお  (社会人) 投稿日時 2012/2/20 12:59:14
いろいろやり方があると思いますが、一案を紹介します。

あきこさんのプログラムを前提に、Page2.aspxのLoadイベントのプログラムを次にようにします。
Protected Sub Page_Load(ByVal sender As ObjectByVal e As System.EventArgs) Handles Me.Load

    If Request.Params("txtValue1"IsNot Nothing Then
        Dim x As Integer = Request.Params("txtValue1")
        Dim y As Integer = Request.Params("txtValue2")
        Me.txtAnswer1.Text = x + y
    End If

End Sub


以上です。

この考え方は、
>Page2にtxtAnswerValue(計算結果)の値が表示されます。
これができているなら、txtValue1とtxtValue2を直接とってくるようにすればよいのではないかというものです。

なお、ご存知と思いますが、クライアントとサーバーの通信はVBやJavaなどのプログラミング言語の仕組みではなく、HTTPの仕組みで行われているので、Page1の情報はPage2でもHTTPのパラメーターとして取得することができます。
ドメインが異なる場合、この仕組みはセキュリティ上の理由でブラウザー側でエラーにされるかもしれないので注意してください。
投稿者 あきこ  (高校生) 投稿日時 2012/2/21 07:44:20
るきおさん、
ご回答有難うございました。
るきおさんの方法で、無事に解決しました。
パラメーター取得の件も、丁寧に説明してくださって有難うございました。

ラオシスさんが回答された、
getを使う方法ですが、私のもってる知識では解決できませんでした。
おそらく、
[Page1.aspx]の
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" 
            PostBackUrl="~/Page2.aspx" />
の箇所、PostBackUrlをはずして、他の方法でPage2に遷移するようにし、getを使用しようと思いましたが、うまくいきませんでした。
もう少し、考えてみて、うまくいかなければ、この質問に関しては解決にしようと思います。
もし、getの方法での、何か助言があれば幸いです。
もう少しお付き合い頂ければと思います。よろしくお願いします。