@TheVillageIdiot が言ったように、URL の書き換えはより良いアプローチです。ただし、クロスページ投稿機能も使用できます。見てみな:
マークアップ
<asp:HiddenField ID="HiddenField1" runat="server" ClientIDMode="Static" />
<asp:Repeater ID="Repeater1" runat="server">
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" PostBackUrl="~/Second.aspx" Text='<%# Bind("Text") %>' OnClientClick='<%# "LinkButton1_Click(\"" + Eval("Value") + "\")" %>' />
</ItemTemplate>
</asp:Repeater>
<script type="text/javascript">
function LinkButton1_Click(v) {
document.getElementById('HiddenField1').value = v;
}
</script>
前のコード スニペットでわかるように、単純な JavaScript を使用して、選択した項目を格納するための非表示フィールドを追加する必要があります。SelectedValue
また、反対側の非表示フィールドの値を取得するために呼び出されるプロパティを定義しました。
コードビハインド
protected void Page_Load(object sender, EventArgs e)
{
Repeater1.DataSource = new[] {
new { Text = "Item 1", Value = "Item 1" },
new { Text = "Item 2", Value = "Item 2" },
new { Text = "Item 3", Value = "Item 3" }
};
Repeater1.DataBind();
}
public string SelectedValue
{
get { return HiddenField1.Value; }
}
セカンドページ
次のディレクティブを宛先ページに追加します。
<%@ PreviousPageType VirtualPath="~/Default.aspx" %>
最後に、クラスPreviousPage
のプロパティを介して前のページにアクセスできます。Page
string value = ((_Default)this.PreviousPage).SelectedValue;