asp.net HyperLink动态创建NavigateUrl路径

时间:2012-08-13 13:30:53

标签: asp.net hyperlink

我的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>
         <% } %>

虽然第一个&lt;%:item.CODE%&gt;工作,我可以看到项目的代码写,

2 个答案:

答案 0 :(得分: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"/>

答案 1 :(得分:1)

你应该使用转发器控制&amp;处理其ItemDataBound事件。 这将使您的代码更清洁&amp;易于调试。

在.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>