0

我在我的 asp.net 页面中有这个:

<% foreach (Product item in ProductList())
           {
            %>
          <div id="i<%:item.CODE %>" class="item" dir="rtl">
               <label class="code"><%:item.CODE %></label>
       <asp:HyperLink runat="server" ID="DetailsLink" Text="Details" 
       NavigateUrl="~/Details.aspx?ProductCode=<%:item.CODE %>" font-size="18px"></asp:HyperLink>
          </div>
         <% } %>

虽然第一个 <%:item.CODE%> 有效并且我可以看到项目的代码编写,

在 NavigateUrl 字符串中它不起作用。

我得到一个链接到“http://localhost:34546/Details.aspx?ProductCode=<%:item.CODE %>”

如何将项目的代码连接到链接?

4

2 回答 2

1

试试这个

 <% foreach (String str in new string[] { "Apple", "Mango", "Orange" })
       {
    %>
    <div id="i<%: str %>" class="item" dir="rtl">
        <label class="code">
            <%: str %></label>
               <a href='<%: "Details.aspx?ProductCode=" + str %>'>DetailsLink</a>
    </div>
    <% } %>

代替

<asp:HyperLink runat="server" 
       ID="DetailsLink" 
       Text="Details" 
       NavigateUrl="~/Details.aspx?ProductCode=<%:item.CODE %>" 
       font-size="18px"/>
于 2012-08-13T13:35:45.203 回答
1

您应该使用中继器控件并处理其 ItemDataBound 事件。这将使您的代码更清晰且易于调试。

在您的 .aspx.cs 文件中:

protected void rpt_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {

                Product item = e.Item.DataItem as Product ;
                HyperLink DetailsLink = e.Item.FindControl("DetailsLink") as HyperLink;
                DetailsLink.NavigateUrl= "~/Details.aspx?ProductCode=" + item.CODE;

            }
        }



protected void Page_Load(object sender, EventArgs e)
        {
            rpt.DataSource = ProductList();
            rpt.DataBind();
        }

在您的 .aspx 文件中:

  <asp:Repeater ID="rpt" runat="server">                                                   <ItemTemplate>                                                            
     <asp:HyperLink runat="server" ID="DetailsLink" Text="Details" 
        font-size="18px"></asp:HyperLink>                             
  </ItemTemplate>
 </asp:Repeater>
于 2012-08-13T13:39:53.023 回答