在asp:ListView中对当前项使用Eval()函数

6
在ASP:ListView中,我想把整个对象传递给ItemTemplate中的子控件,而不仅仅是当前对象的单个属性。
这是我想要工作的代码:
<asp:ListView ID="answers" runat="server">
    <LayoutTemplate>
       <div id="itemPlaceholder" runat="server" />
    </LayoutTemplate>
    <ItemTemplate>
       <div>
          <uc2:DocumentHeader runat="server" Document="Eval(%# Eval("this") %> />
               <p><%# Eval("Body") %></p>
        </div>
     </ItemTemplate>
</asp:ListView>

文档头的Document属性期望整个文档对象,而"Body"是Document的一个属性。

显然,我可以在Document中创建一个新属性或使用LINQ查询生成一个具有所需属性的新类,我只是想知道是否有更简单、更直接的方法来获得我想要的结果。

1个回答

9
您可以使用 <%# Container.DataItem %> 绑定上下文对象。您可能需要将其强制转换为“Document”所期望的类型。
<asp:ListView ID="answers" runat="server">
    <LayoutTemplate>
       <div id="itemPlaceholder" runat="server" />
    </LayoutTemplate>
    <ItemTemplate>
       <div>
          <uc2:DocumentHeader runat="server" Document="<%# Container.DataItem %>" />
          <p><%# Eval("Body") %></p>
        </div>
     </ItemTemplate>
</asp:ListView>

2
完成了。我不需要强制转换该项,这是自动完成的。 - spaetzel

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