- PR -

第16回 ASP.NETにおけるページの遷移 => もっと簡単にできる方法もあります

1
投稿者投稿内容
Access
ぬし
会議室デビュー日: 2002/04/08
投稿数: 829
投稿日時: 2003-04-05 07:55
ASP.NETでページ間で情報を遷移させるには、
・QueryString
・Session変数
・Server.Transfer()
などがあります。

Server.Transfer("NewPage.aspx", True)のように、
2番目の引数にTrueを指定することによりForm Stateを保存することができます。
この場合、遷移元のWebフォームに入力したデータが遷移先に継承されます。

この機能を使用するときは、遷移先のページの@ Pageディレクティブに
EnableViewStateMac="False"を追加する必要があります。

たとえば、Page1.aspxのTextBoxに入力した値をPage2.aspxのTextBoxに継承
したいときは、TextBoxのIDを同じ名称にするだけでOKです。

Page1.aspx
<asp:TextBox id="TextBox1" runat="server" />

Page2.aspx
<asp:TextBox id="TextBox1" runat="server" />

もちろん、Request.Form("TextBox1")のように記述して直接値を
取得することもできます。

サンプルコード

メソッド1:EnableViewStateMac="True" (なぜかデフォルトになっています)
コード:

Page1a.aspx
<%@ Page Language="vb" ClassName="WebForm1" %>

<script runat="server">
Public _SomeValue As String

Sub Button1_Click(s As Object, e As EventArgs)
SomeValue = TextBox1.Text
Server.Transfer("Page1b.aspx")
End Sub

Property SomeValue() As String
Get
Return _SomeValue
End Get

Set(Value As String)
_SomeValue = Value
End Set
End Property

</script>

<html>
<body>
<form runat="server">
Enter Some Value :
<asp:TextBox id=TextBox1 runat="server" />
<br />
<asp:Button id="Button1" runat="server"
Text="Submit"
OnClick="Button1_Click" />
</form>
</body>
</html>

Page1b.aspx
<%@ Page Language="vb" %>
<%@ Reference Page="Page1a.aspx" %>

<script runat="server">
Sub Page_Load(s As Object, e As EventArgs)
Dim wf1 As WebForm1
wf1 = CType(Context.Handler, WebForm1)
TextBox1.Text = wf1.SomeValue()
End Sub
</script>

<html>
<body>
<form runat="server">
You Entered :
<asp:TextBox id="TextBox1" runat="server" />
</form>
</body>
</html>




メソッド2:EnableViewStateMac="False"
コード:

Page2a.aspx
<%@ Page Language="vb" %>

<script runat="server">
Sub Button1_Click(s As Object, e As EventArgs)
Server.Transfer("Page2b.aspx", True)
End Sub
</script>

<html>
<body>
<form runat="server">
Enter Some Value :
<asp:TextBox id=TextBox1 runat="server" />
<br />
<asp:Button id="Button1" runat="server"
Text="Submit"
OnClick="Button1_Click" />
</form>
</body>
</html>

Page2b.aspx
<%@ Page Language="vb" EnableViewStateMac="False" %>

<script runat="server">
Sub Page_Load(s As Object, e As EventArgs)
Response.Write("You Entered :" & Request.Form("TextBox1"))
End Sub
</script>

<html>
<body>
<form runat="server">
You Entered :
<asp:TextBox id="TextBox1" runat="server" />
</form>
</body>
</html>




[ メッセージ編集済み 編集者: Mr.ADO.NET 編集日時 2003-04-05 20:27 ]
1

スキルアップ/キャリアアップ(JOB@IT)