Server.Transferでページを遷移する場合にはパブリックなプロパティを利用してデータを次のページに渡すことが可能です。
Page1.aspx
-------------------------------------------------------
<%@ Page Language="C#" %>
<html>
<head>
<script runat="server">
public string InputText
{
get { return textbox1.Text; }
}
void button_Click(Object sender, EventArgs e)
{
Server.Transfer("Page2.aspx");
}
</script>
</head>
<body>
<form id="myForm" runat="server">
このページはPage1です<br />
<asp:textbox id="textbox1" runat="server" /><br />
<asp:button text="Page2へ" OnClick="button_Click" runat="server" />
</form>
</body>
</html>
-------------------------------------------------------
Page2.aspx
-------------------------------------------------------
<%@ Page Language="C#" %>
<%@ Reference Page="Page1.aspx" %>
<html>
<head>
<script runat="server">
void Page_Load(Object sender, EventArgs e)
{
Page1_aspx p1 = (Page1_aspx) Context.Handler;
label1.Text = "渡された文字列:" + p1.InputText;
}
</script>
</head>
<body>
このページはPage2です<br />
<asp:label id="label1" runat="server" />
</body>
</html>
-------------------------------------------------------
Server.Transferの場合、Page1.aspxとPage2.aspxのインスタンスがサーバ上に同時に存在することになるため、Page1.aspxのインスタンスが持つデータをPage2.aspxから利用できる、のだと思います。。。たぶん。。。
詳しくはドキュメントの「ページ間でサーバー コントロール値を渡す」という項目を確認してください。
なお、Server.Transferを利用する場合にContext.Itemsにキーと値を追加して利用する方法を紹介している書籍もあります。
それで動作することは確認したのですが、自分なりの理屈付けがきちんとできないので、ここでは紹介しないことにします。
あおい情報システム株式会社 小野修司(どっとねっとふぁん)