我的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;工作,我可以看到项目的代码写,
答案 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>