使用Repeater控件构建动态链接

5

我正在使用 Repeater 控件呈现数据。

假设数据源中有两个字段:productName 和 ProductID。

在下面的代码中:

<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<HeaderTemplate>
<ul>
</HeaderTemplate>
<ItemTemplate>
<li>
<%#Eval("productName")%> <br/>
<asp:HyperLink ID="lnkDetails" runat="server" NavigateUrl="~/Details.aspx?ID=">See Details</asp:HyperLink>
</li>
</ItemTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>

我需要修改什么?

<asp:HyperLink ID="lnkDetails" runat="server" NavigateUrl="~/Details.aspx?ID=">See Details</asp:HyperLink>

需要在链接中包含从ProductID检索到的值,NavigateUrl="~/Details.aspx?ID="

1个回答

17

NavigateUrl="~/Details.aspx?ID=<%# Eval("productID") %>"应该是有效的,但它并不起作用...

最优雅的方法应该是:

<asp:HyperLink ID="lnkDetails" runat="server" NavigateUrl='<%# Eval("ProductID", "~/Details.aspx?ID={0}") %>'>See Details</asp:HyperLink>

我实际上做的就是这样,但似乎没有起作用。将NavigateUrl="~/Details.aspx?ID=<%# Eval("productID") %>"放入代码中会导致生成designer文件失败:服务器标记没有被正确地形成。当我将一组引号更改为单引号时,它创建了链接Details.aspx?ID=<%# Eval('productID') %>。 - padn
“表达式参数的值必须评估为公共属性。” 来源:http://msdn.microsoft.com/en-us/library/4hx47hfe.aspx。编辑:您是正确的,因为最初的方法实际上并没有起作用,但更新后的方法确实可以... - John Rasch

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接