为什么Link Button控件变量没有得到任何值?

时间:2012-01-28 23:01:15

标签: c# asp.net .net

我创建了位于Repeater Control内部的LinkBut​​ton。 CategoryID是LinkBut​​ton 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变量没有得到任何值,我该如何解决这个问题呢?

1 个答案:

答案 0 :(得分:1)

服务器控件参数不能包含文字文本和计算表达式的混合。  您拥有的代码将逐字地回发到 AddItem.aspx?CategoryID =&lt;%#Eval(“CollectionID”)%&gt; ,它将不会评估尖括号内的代码。< / p>

您需要像这样更改参数

PostBackUrl='<%# "AddItem.aspx?CategoryID=" + Eval("CollectionID")%>' />