请帮忙查找错误,或者提出另一种方法:
我试图将AspNetUsers
的列表显示为ListView
,然后通过使用嵌套的ListView
显示其AspNetRoles
的列表:
<asp:ListView runat="server" ItemType= "CEODAL.AspNetUser" SelectMethod="GetAspNetUsers" >
<LayoutTemplate>
<h4>Registered Users</h4>
<table class="table">
<tbody>
<tr runat="server" id="itemPlaceholder"></tr>
</tbody>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td><%#: Item.UserName %></td>
<td>
<asp:ListView ID="Repeater1" runat="server" ItemType="CEODAL.AspNetRole" SelectMethod="<%#: Item.AspNetRoles.ToList() %>">
<LayoutTemplate>
<h4>Registered Users</h4>
<table class="table">
<tbody>
<tr runat="server" id="itemPlaceholder2"></tr>
</tbody>
</table>
</LayoutTemplate>
<ItemTemplate>
<tr>
<td>
<%#: Item.Name %>
</td>
</tr>
</ItemTemplate>
</asp:ListView>
</td>
</tr>
</ItemTemplate>
父ListView
的SelectMethod
将返回AspNetUsers
的列表:
return _db.AspNetUsers.ToList();
没有子ListView
,一切工作正常,在那里我将得到用户名列表。
一旦我把第二个ListView
,我将得到以下错误:
一个名为'System.Collections.ObjectModel.ObservableCollection ' 1的公共方法。
在"ASP.pages_manageusers_aspx"类型上有多个同名的方法。
尝试替换
属性SelectMethod="<%#: Item.AspNetRoles.ToList() %>">
在内部ListView中使用
DataSource="<%# Item.AspNetRoles.ToList() %>">
你得到一个错误,因为SelectMethod
属性有一个字符串值(代码隐藏方法的名称调用),你正在传递一个角色对象的ObservableCollection。很明显,代码隐藏类没有方法的名称是将集合转换为字符串的结果,因此出现错误