DataList 中的 HyperLink 控制項無法在後端直接取得控制項實例,若想點擊跳轉並傳遞文字內容,直接在前端綁定 NavigateUrl 帶 QueryString 即可,完全不需要 Server.Transfer。
<asp:DataList ID="DataList1" runat="server">
<ItemTemplate>
<asp:HyperLink ID="hlTitle" runat="server"
Text='<%# Eval("Title") %>'
NavigateUrl='<%# "Detail.aspx?title=" + Server.UrlEncode(Eval("Title").ToString()) %>' />
</ItemTemplate>
</asp:DataList>
// Detail.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
string title = Request.QueryString["title"];
if (!string.IsNullOrEmpty(title))
{
// 解碼後使用
lblTitle.Text = Server.UrlDecode(title);
}
}
FindControl 麻煩。若需傳遞敏感資料,請改用 POST 表單或加密 Token。