【问题标题】:ASP.net putting a dataitem in a repeaterASP.net 将数据项放入转发器
【发布时间】:2011-04-14 19:08:04
【问题描述】:

我有一个:

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

我想在控件中添加一些值。目前我有一个控件:

<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 属性。光装进去好像不行!

【问题讨论】:

  • 可以显示超链接代码吗?

标签: c# asp.net repeater web-controls datarepeater


【解决方案1】:

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

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

这可能是你的问题。

【讨论】:

  • 呃,我无法测试它,因为我在工作,如果你尝试使用 NavigateUrl(而不是 URL)会发生什么?它曾经对我有用(除非&lt;%# 之前有文字)。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    另一种选择是松开控件并将其替换为 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 的开销。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-12
      • 2012-07-03
      • 1970-01-01
      • 2014-12-31
      • 1970-01-01
      • 2018-11-21
      • 2016-12-29
      相关资源
      最近更新 更多