2

我有一个:

  • 数据中继器
  • 中继器中的控制

我想在控件中添加一些值。目前我可以控制它:

<asp:Repeater runat="server" ID="ArchiveEntryRepeater">
    snip
    <asp:HyperLink ID="HyperLink1" ToolTip="Comment on Some Entry Title Here" runat="server" NavigateUrl="~/Blog/7/How-to-know-when-this/Comments">
        <strong><%# DataBinder.Eval(Container.DataItem, "Comments")%></strong> Comments
    </asp:HyperLink>
    snip
</asp:Repeater> 

哪个工作正常,但我想把

<%# DataBinder.Eval(Container.DataItem, "Title")%>

进入超链接的 NavigateURL 属性。只是装进去好像不行!

4

3 回答 3

3

尝试将 NavigateURL 括在撇号而不是双引号中,以免混淆 ASP.NET 解析器:

<asp:HyperLink runat="server" NavigateUrl='<%# DataBinder.Eval(Container.DataItem, "Title")%>' [...]>[...]</asp:HyperLink>

这可能是你的问题。

于 2011-04-14T19:12:18.477 回答
1

您始终可以使用事件itemdatabound在后端绑定。它有一些优势,特别是在数据不是一个整洁的视图或需要某种类型的主要操作的情况下。

于 2011-04-14T19:11:24.450 回答
0

另一种选择是松开控件并将其替换为 html 锚控件,如下所示:

 <asp:Repeater>
        <ItemTemplate>
            <a id="HyperLink1" title="Comment on Some Entry Title Here" href='<%# DataBinder.Eval(Container.DataItem, "Title")%>'
                style="font-weight: bold">'<%# DataBinder.Eval(Container.DataItem, "Comments")%>'</a>
        </ItemTemplate>
    </asp:Repeater>

一旦服务器呈现到客户端的超链接,通常没有理由让它 "runat='server'" 。目的是导航到另一个页面,因此浪费了使用 asp:HyperLink 与 nchor 的开销。

于 2011-04-14T19:27:25.040 回答