2012-08-13 70 views
0

我有這個在我的asp.net頁面:asp.net超鏈接動態創建NavigateUrl路徑

<% 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://本地主機:34546/Details.aspx產品代碼= <%:item.CODE%>」

我如何Concat的該項目的代碼的鏈接?

回答

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"/> 
+0

作品!謝謝 – Programer 2012-08-14 10:20:10

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> 
+0

這個怎麼用? – Programer 2012-08-13 13:43:08

+0

看到我更新的asnwer – 2012-08-13 13:52:56