asp.net 连接会话从中继器的项目到另一个页面不起作用

50few1ms  于 2023-02-10  发布在  .NET
关注(0)|答案(1)|浏览(112)

我希望从单击的重复程序中的特定项目获取文本框中的文本,并在页ViewRecipe2.aspx上使用它。当前,当您单击其中一个项目上的按钮时,它将返回到重复程序的页,但不显示重复程序,而不是移动到页ViewRecipe2.aspx。
这是我在aspx中的中继器:

<asp:Repeater ID="RepeaterR" runat="server">
    <ItemTemplate>
         <div class="wrapper">
         <table>
             <div class="box">
                  <div class="property-card">
                      <div class="property-image">
                        <div class="property-image-title">
                        </div>
                      </div>
                    <div class="property-description">
                      <asp:Button CssClass="h5" runat="server" ID="Button1" OnClick="Button1_Click" Text=<%# Eval("recipeName")%> BackColor="Transparent" BorderColor="Transparent"/>
                      <p><%#Eval("avgRating") %> stars</p>
                      <asp:Image class="img" runat="server" src=<%#Eval("recipePic") %> />
                        <asp:TextBox ID="hiddenTB" runat="server" Text=<%# Eval("recipeName")%> Visible="false"></asp:TextBox>
                    </div>
                  </div>
             </div>
        </table>
        </div>
    </ItemTemplate>
    </asp:Repeater>

下面是C#的代码:

protected void Button1_Click(object sender, EventArgs e)
        {
            RepeaterItem item = (sender as Button).NamingContainer as RepeaterItem;
            string VR = (item.FindControl("hiddenTB") as TextBox).Text;
            if (VR!=null)
            {
                Session["selectedRecipe"] = VR;
                Response.Redirect("ViewRecipe2.aspx");
            }
        }

这是一个关于

<asp:TextBox ID="TextBoxP" runat="server"></asp:TextBox>

以及背后的代码:

protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                string theRecipeName = (Session["selectedRecipe"]).ToString();
                TextBoxP.Text = theRecipeName;
            }
        }
cetgtptt

cetgtptt1#

嗯,文本框或隐藏字段是“永远”空的。
但是,您需要在隐藏字段的“文本”设置周围加上引号。

<asp:TextBox ID="hiddenTB" runat="server" 
       Text='<%# Eval("recipeName")%>' Visible="false">
 </asp:TextBox>

另外,请记住,visible=false时,标记不会被发送到客户端,也不会在客户端呈现,这意味着客户端js代码不能使用该文本框,但服务器端代码可以很好地抓取文本框,然后获取您所拥有的值。
然而,虽然你“应该”有那些单引号?
它应该还能用。
我会为了测试,删除可见=“假”,然后你就可以实际看到+验证这个值是正确的。

相关问题