ASP.net将数据项目放入转发器中

时间:2011-04-14 19:08:04

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

我有一个:

  • 数据中继器
  • 控制转发器

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

<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")%>

进入Hyperlink的NavigateURL属性。把它放进去似乎不起作用!

3 个答案:

答案 0 :(得分:3)

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

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

这可能是你的问题。

答案 1 :(得分:1)

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

答案 2 :(得分: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的开销。