如何在转发器的方法中使用 Eval() 数据

How to use Eval() data in a method within a repeater

我写了一个方法来检查 returns URL 的状态代码。然后我使用中继器从我的数据库中获取行。我想弄清楚的是如何在转发器内调用的方法中使用转发器中返回的数据。这是 ItemTemplate 的代码。

<ItemTemplate>
    <tr class="alt">
        <td><%# Eval("Bounce_from") %></td>
        <td><%# Eval("Bounce_to") %></td>
        <td><%# Eval("is301") %></td>
        <td><% Response.Write(exist(Eval("Bounce_to")));  %></td>
    </tr>
</ItemTemplate>

<% Response.Write(存在(Eval("Bounce_to"))); %> 是我挣扎的地方。我已经搜索过但找不到答案。希望有人能给我指出正确的方向...提前致谢。

就这么简单

<td><%# exist(Eval("Bounce_to")) %></td>

这是假设 exist 在标记上可用(它至少应该受保护的页面方法)并且接受 object 作为输入参数,因为 Eval returns 对象。

基本上 <%# %> 在数据绑定上下文中运行其中的任何代码(因此 Eval 可用)并将最终值输出到标记。

如果没有真正完整地看到您的 Repeater,将很难排除故障。但是一个工作示例,可能会帮助您解决问题。

<asp:Repeater Id="rpCustomer" runat="server" DataSourceId="dsCustomer">
     <ItemTemplate>

     </ItemTemplate>
</asp:Repeater>

中继器的重要部分是DataSourceId。您要确保它已正确配置并确实将数据从数据库中提取出来。

第二部分,几乎就像您试图为 Eval() 调用方法一样。这样您就可以在数据源迭代时的任何给定点修改数据。

<!-- An Example -->
<%# Truncate(Eval("Description").ToString()) %>

所以,在我的例子中,Truncate 会像传统方法一样在代码后面:

protected string Truncate(string source)
{
     // Logic and Include valid Data Return
}

这将允许在数据显示在 View State 中之前快速操作从数据库中提取的数据。

<!-- Final Result: -->
    <asp:Repeater Id="rpCustomer" runat="server" DataSourceId="dsCustomer">
         <ItemTemplate>
               <%# Truncate(Eval("Description").ToString()) %>
         </ItemTemplate>
    </asp:Repeater>