如何在单击按钮时提取标签文本
How to extract label text at button click
所以我想做的是在单击按钮时从标签中提取文本。到目前为止我得到的是以下内容:
<asp:Label ID="lbl_carID" runat="server" Text="Label"></asp:Label>
<asp:Label ID="lbl_ownerID" runat="server" Text="Label"></asp:Label>
<asp:Button ID="btn_wishList" runat="server" Text="Add to wish list" CssClass="btn" CommandArgument='<%= lbl_carID.Text.ToString() %>' OnCommand="btn_wishList_Command" />
<asp:Button ID="btn_offer" runat="server" Text="Make Offer" CssClass="btn" CommandArgument='<%= lbl_ownerID.Text.ToString() %>' OnCommand="btn_offer_Command" />
我也尝试过不使用 ToString()
方法,但它不起作用。还尝试在 %
之后不使用 =
。我是代码插入的新手,所以我想它真的很小,但我无法让它工作。有什么建议吗?
编辑:这是 btn_offer_command
背后的代码。这两个命令在开始时是相同的,所以我发布了较短的代码。
protected void btn_offer_Command(object sender, CommandEventArgs e)
{
string id = (string)e.CommandArgument;
Session["ownerToBeOffered"] = id;
Response.Redirect("LoggedInFeatures/MakeOffer.aspx");
}
将它放在代码中的某处
[ExpressionPrefix("Code")]
public class CodeExpressionBuilder : ExpressionBuilder
{
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry,
object parsedData, ExpressionBuilderContext context)
{
return new CodeSnippetExpression(entry.Expression);
}
}
在编译部分web.config中注册
<compilation debug="true" targetFramework="4.5.1" >
<expressionBuilders>
<add expressionPrefix="Code" type="WebApplication2.CodeExpressionBuilder"/>
</expressionBuilders>
</compilation>
现在您将能够按照以下构造所预期的那样评估此时的任何代码
<asp:Button ID="btn_offer" runat="server" Text="Make Offer" CssClass="btn" CommandArgument='<%$ Code: lbl_ownerID.Text %>' OnCommand="btn_offer_Command" />
我相信您不能在带有 runat="server".
的属性内部使用 <%= %>
尝试传递 CommandName 并在您的处理程序中检查它。
例子
<asp:Label ID="lbl_carID" runat="server" Text="Labeddl1"></asp:Label>
<asp:Label ID="lbl_ownerID" runat="server" Text="Label1"></asp:Label>
<asp:Button CommandName="carID" CssClass="btn" ID="btn_wishList" OnCommand="btn_wishList_Command" runat="server" Text="Add to wish list" />
<asp:Button CommandName="ownerID" CssClass="btn" ID="btn_offer" runat="server" Text="Make Offer" OnCommand="btn_offer_Command" />
然后在您的代码中尝试类似以下内容...
protected void btn_wishList_Command(object sender, CommandEventArgs e)
{
if (e.CommandName == "carID")
{
//Do Something here
}
}
protected void btn_offer_Command(object sender, CommandEventArgs e)
{
if (e.CommandName == "ownerID")
{
//Do Something here
}
}
所以我想做的是在单击按钮时从标签中提取文本。到目前为止我得到的是以下内容:
<asp:Label ID="lbl_carID" runat="server" Text="Label"></asp:Label>
<asp:Label ID="lbl_ownerID" runat="server" Text="Label"></asp:Label>
<asp:Button ID="btn_wishList" runat="server" Text="Add to wish list" CssClass="btn" CommandArgument='<%= lbl_carID.Text.ToString() %>' OnCommand="btn_wishList_Command" />
<asp:Button ID="btn_offer" runat="server" Text="Make Offer" CssClass="btn" CommandArgument='<%= lbl_ownerID.Text.ToString() %>' OnCommand="btn_offer_Command" />
我也尝试过不使用 ToString()
方法,但它不起作用。还尝试在 %
之后不使用 =
。我是代码插入的新手,所以我想它真的很小,但我无法让它工作。有什么建议吗?
编辑:这是 btn_offer_command
背后的代码。这两个命令在开始时是相同的,所以我发布了较短的代码。
protected void btn_offer_Command(object sender, CommandEventArgs e)
{
string id = (string)e.CommandArgument;
Session["ownerToBeOffered"] = id;
Response.Redirect("LoggedInFeatures/MakeOffer.aspx");
}
将它放在代码中的某处
[ExpressionPrefix("Code")]
public class CodeExpressionBuilder : ExpressionBuilder
{
public override CodeExpression GetCodeExpression(BoundPropertyEntry entry,
object parsedData, ExpressionBuilderContext context)
{
return new CodeSnippetExpression(entry.Expression);
}
}
在编译部分web.config中注册
<compilation debug="true" targetFramework="4.5.1" >
<expressionBuilders>
<add expressionPrefix="Code" type="WebApplication2.CodeExpressionBuilder"/>
</expressionBuilders>
</compilation>
现在您将能够按照以下构造所预期的那样评估此时的任何代码
<asp:Button ID="btn_offer" runat="server" Text="Make Offer" CssClass="btn" CommandArgument='<%$ Code: lbl_ownerID.Text %>' OnCommand="btn_offer_Command" />
我相信您不能在带有 runat="server".
的属性内部使用 <%= %>尝试传递 CommandName 并在您的处理程序中检查它。
例子
<asp:Label ID="lbl_carID" runat="server" Text="Labeddl1"></asp:Label>
<asp:Label ID="lbl_ownerID" runat="server" Text="Label1"></asp:Label>
<asp:Button CommandName="carID" CssClass="btn" ID="btn_wishList" OnCommand="btn_wishList_Command" runat="server" Text="Add to wish list" />
<asp:Button CommandName="ownerID" CssClass="btn" ID="btn_offer" runat="server" Text="Make Offer" OnCommand="btn_offer_Command" />
然后在您的代码中尝试类似以下内容...
protected void btn_wishList_Command(object sender, CommandEventArgs e)
{
if (e.CommandName == "carID")
{
//Do Something here
}
}
protected void btn_offer_Command(object sender, CommandEventArgs e)
{
if (e.CommandName == "ownerID")
{
//Do Something here
}
}