Repeater项通过Session跳转至另一页面功能异常
问题排查与解决方案
一、Repeater回发后不显示的修复
点击按钮后页面回发但未跳转,导致Repeater控件空白,核心原因是页面回发后未重新绑定Repeater数据源。
在原页面的Page_Load中补充数据绑定逻辑:
protected void Page_Load(object sender, EventArgs e) { // 每次页面加载(包括回发)都重新绑定Repeater数据 BindRepeaterData(); } // 封装Repeater数据绑定方法 private void BindRepeaterData() { // 这里替换成你的实际数据源获取逻辑(比如从数据库查询) // 示例: // DataTable recipeTable = GetRecipeListFromDB(); // RepeaterR.DataSource = recipeTable; // RepeaterR.DataBind(); }
二、按钮点击未跳转的排查与修复
1. 确保按钮事件正常触发
先确认Button1_Click方法是否被执行:
- 检查Repeater中按钮的
OnClick属性是否和后台方法名完全一致(代码中是OnClick="Button1_Click",需确保后台方法访问修饰符为protected) - 排查页面是否存在验证控件(如
RequiredFieldValidator)阻止了回发
2. 优化跳转逻辑(避免空引用)
修改Button1_Click方法,增加空值判断并强制终止当前页面执行:
protected void Button1_Click(object sender, EventArgs e) { Button btn = sender as Button; if (btn == null) return; RepeaterItem item = btn.NamingContainer as RepeaterItem; if (item == null) return; TextBox hiddenTB = item.FindControl("hiddenTB") as TextBox; if (hiddenTB != null && !string.IsNullOrEmpty(hiddenTB.Text)) { Session["selectedRecipe"] = hiddenTB.Text; // 使用重载方法确保立即跳转,终止当前页面流程 Response.Redirect("ViewRecipe2.aspx", true); } }
3. 简化值传递(替代隐藏TextBox)
无需依赖隐藏TextBox,直接通过按钮的CommandArgument绑定值更高效:
修改Repeater中的按钮代码:
<asp:Button CssClass="h5" runat="server" ID="Button1" OnClick="Button1_Click" Text='<%# Eval("recipeName")%>' CommandArgument='<%# Eval("recipeName")%>' BackColor="Transparent" BorderColor="Transparent"/>
后台直接读取CommandArgument:
protected void Button1_Click(object sender, EventArgs e) { Button btn = sender as Button; if (btn != null && !string.IsNullOrEmpty(btn.CommandArgument)) { Session["selectedRecipe"] = btn.CommandArgument; Response.Redirect("ViewRecipe2.aspx", true); } }
三、ViewRecipe2.aspx的异常防护
在目标页面增加Session空值判断,避免空引用报错:
protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { if (Session["selectedRecipe"] != null) { TextBoxP.Text = Session["selectedRecipe"].ToString(); // 清除已使用的Session,避免残留 Session.Remove("selectedRecipe"); } else { TextBoxP.Text = "未选择食谱"; } } }
内容的提问来源于stack exchange,提问作者KK2007
相关产品推荐
相关产品推荐

