我希望从单击的重复程序中的特定项目获取文本框中的文本,并在页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;
}
}
1条答案
按热度按时间cetgtptt1#
嗯,文本框或隐藏字段是“永远”空的。
但是,您需要在隐藏字段的“文本”设置周围加上引号。
另外,请记住,visible=false时,标记不会被发送到客户端,也不会在客户端呈现,这意味着客户端js代码不能使用该文本框,但服务器端代码可以很好地抓取文本框,然后获取您所拥有的值。
然而,虽然你“应该”有那些单引号?
它应该还能用。
我会为了测试,删除可见=“假”,然后你就可以实际看到+验证这个值是正确的。