我创建了位于Repeater Control内部的LinkButton。 CategoryID是LinkButton Control中的一个变量,它必须在Repeater Control绑定到数据后获取值。但是CategoryID总是为零。
我有以下ASP和C#代码:
<asp:Repeater ID="rpt1" runat="server"
OnItemDataBound="rpt1_ItemDataBound"
OnItemCommand="rpt1_ItemCommand">
<ItemTemplate>
<div>
<%# Eval("Name") %>-<%# Eval("CollectionType")%>
<asp:LinkButton ID="LinkButton1" runat="server" Text="[edit item]"
PostBackUrl='AddItem.aspx?CategoryID=<%# Eval("CollectionID")%>' />
</div>
</ItemTemplate>
</asp:Repeater>
代码背后:
public void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
List<GlassesCollection> gc = BL.GetDataBL.GetCollection();
rpt1.DataSource = gc;
rpt1.DataBind();
}
}
知道为什么CategoryID变量没有得到任何值,我该如何解决这个问题呢?
答案 0 :(得分:1)
服务器控件参数不能包含文字文本和计算表达式的混合。 您拥有的代码将逐字地回发到 AddItem.aspx?CategoryID =&lt;%#Eval(“CollectionID”)%&gt; ,它将不会评估尖括号内的代码。< / p>
您需要像这样更改参数
PostBackUrl='<%# "AddItem.aspx?CategoryID=" + Eval("CollectionID")%>' />