ASP.Net LinkBut​​ton CommandArgument属性忽略<%= ..%>

时间:2010-10-19 23:45:37

标签: asp.net servercontrols

我正在尝试执行我认为在ASP.Net LinkBut​​ton控件上设置属性的非常简单的操作但由于某种原因,ASP.Net忽略了标记并且只是将值作为字符串传递。< / p>

<asp:LinkButton id="viewDetails" runat="server" Text="Details" OnClick="btnDetails_Click" CommandName="ItemID" CommandArgument="<%= item.ItemID %>" />

点击链接后,我用以下方式处理:

   protected void btnDetails_Click(object sender, EventArgs e)
   {
       try
       {
           LinkButton btn = (LinkButton)sender;
           if (btn.CommandName == "ItemID")
           {
               string itemID = btn.CommandArgument.ToString();               
           }
       }
       catch (Exception excp)
       {
           lblError.ForeColor = System.Drawing.Color.Red;
           lblError.Text = excp.Message;
       }
   }

问题是itemID最终的值为“&lt;%= item.ItemID%&gt;”。

我见过其他人遇到同样的问题,并尝试下面的内容,但到目前为止,没有一个对我有用。

<asp:LinkButton id="viewDetails" runat="server" Text="Details" OnClick="btnDetails_Click" CommandName="ItemID" CommandArgument=<%= item.ItemID %> />

<asp:LinkButton id="viewDetails" runat="server" Text="Details" OnClick="btnDetails_Click" CommandName="ItemID" CommandArgument="<%# item.ItemID %>" />

3 个答案:

答案 0 :(得分:2)

试试这个

<asp:LinkButton id="viewDetails" runat="server" Text="Details" OnClick="btnDetails_Click" CommandName="ItemID" CommandArgument='<%= item.ItemID %>' />

注意CommandArgument中的单个'

答案 1 :(得分:1)

这应该有效:

<asp:LinkButton id="viewDetails" runat="server" Text="Details" OnClick="btnDetails_Click" CommandName="ItemID" CommandArgument="<%# item.ItemID %>" />
你打电话给.DataBind()吗?见kb

答案 2 :(得分:0)

您可以在此处查看Refrences

<%: item.ItemID %>

添加了ASP.NET 4.0:

&lt;%:%&gt;用于输出HTML编码的字符串(以与&lt;%=%&gt;相同的方式使用)。除非输入是IHtmlString(即表示它知道如何创建有效的HTML),它会自动对其输入进行HTML编码。目的是这将取代&lt;%=%&gt; (见http://haacked.com/archive/2009/09/25/html-encoding-code-nuggets.aspx

这可能会对你有所帮助,请告诉我以获得进一步的帮助。