因此,我有一个 asp.net 网页,其中显示了图像识别服务的一些结果。结果以 OrpObject 类的对象的形式(名称无关紧要),其中包含 Labels_texture 类型的 List<>。这些 Labels_texture 对象中的每一个都包含它们自己的 Labels_color 类型的 List<>。
我想要做的是使用 ListView 显示 Labels_texture 列表中的每个结果;然后在 ListView 的每个单独元素中,显示另一个(嵌套)ListView,对应于我的 OrpObject 中嵌套的 Labels_color List<> 中的元素。
主要问题是,任何时候这些列表中的任何一个都可能有可变数量的元素(或根本没有),因为它们是图像识别服务的结果。我的主要问题是:如何将 OrpObject 中名为 Labels_color 的内部 List<> 中的数据绑定到网页中相应的内部 ListViews,而不在设置 DataSource 并为那些内部 ListViews 执行 DataBind() 时指定数组索引?
希望我能够理解这一切。以下是相关的代码片段:
Orp 对象:
public class OrpObject
{
public List<texture> Labels_texture { get; set; }
}
public class texture
{
public string detector { get; set; }
public string category { get; set; }
public string matched_url { get; set; }
public List<color> Labels_color { get; set; }
}
public class color
{
public string category { get; set; }
public string categoryID { get; set; }
public string confidence { get; set; }
public string matched_url { get; set; }
}
这是我的 .aspx 文件中的 ListView 代码(为简洁起见,已删减)(注意:我是 ASP.NET 新手,我一直盲目地将 runat="server" 附加到 LayoutTemplate 中的所有内容,以防万一它需要在那里。如果我不需要所有这些,你能告诉我吗?)
<asp:ListView ID="ListView_Orp_Results" runat="server">
<LayoutTemplate>
<div id="outer_result_container" runat="server">
<div id="itemPlaceholder" runat="server">
<div id="result_photo" runat="server">
</div>
<div id="result_category" runat="server">
</div>
<div id="result_detector" runat="server">
</div>
</div>
</div>
<div id="inner_result_container" runat="server">
<asp:ListView ID="ListView_inner_results" runat="server">
<LayoutTemplate>
<div id="outer_result_container" runat="server">
<div id="itemPlaceholder" runat="server">
<div id="inner_result_photo" runat="server">
</div>
<div id="inner_result_category" runat="server">
</div>
<div id="inner_result_categoryID" runat="server">
</div>
</div>
</div>
</LayoutTemplate>
<ItemTemplate>
...
</ItemTemplate>
<EmptyDataTemplate>
...
</EmptyDataTemplate>
<EmptyItemTemplate>
...
</EmptyItemTemplate>
</asp:ListView>
</div>
</LayoutTemplate>
<ItemTemplate>
...
</ItemTemplate>
<EmptyDataTemplate>
...
</EmptyDataTemplate>
<EmptyItemTemplate>
...
</EmptyItemTemplate>
</asp:ListView>
最后,这是我的代码隐藏文件中的片段,我在其中尝试将 OrpObject 和相应的列表设置为 ListViews 的数据源:
ListView_Orp_Results.DataSource = myOrp.Labels_texture;
ListView_Orp_Results.DataBind();
foreach (texture myTexture in myOrp.Labels_texture)
{
ListView_inner_results.DataSource = myTexture.Labels_color;
ListView_inner_results.DataBind();
}
我知道这里的 foreach 循环可能不起作用......但这是我唯一能想到的确保为 Labels_texture 列表中包含的每个纹理对象生成嵌套 ListView ......
很抱歉这部小说,并提前感谢您提供的任何意见!