В 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 DocumentHeader ожидает весь Объект документа, тогда как "Тело" является свойством Документа.
Очевидно, я мог просто создать новое свойство в рамках Документа или использовать запрос LINQ для генерации нового класса со свойством, которое я хочу, я просто хочу знать, существует ли более легкий, более прямой способ получить то, что я хочу.
Вы можете связать контекстный объект, используя <%# 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>