C# ASP.NET ListView元素显示<#评估?

C# ASP.NET ListView元素显示<#评估?,c#,asp.net,listview,data-binding,C#,Asp.net,Listview,Data Binding,我有一个使用自定义数据源的ListView控件。它将很快成为一个数据库,但目前我仍在努力让它运行 在我表单的HTML中,我有以下代码: <%-- Ref: https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.layouttemplate.aspx --%> <asp:ListView ID="lvOfficers" runat="server" OnSelectedInd

我有一个使用自定义数据源的ListView控件。它将很快成为一个数据库,但目前我仍在努力让它运行

在我表单的HTML中,我有以下代码:

<%-- Ref: https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.listview.layouttemplate.aspx --%>
<asp:ListView ID="lvOfficers" runat="server"
    OnSelectedIndexChanging="lvOfficers_SelectedIndexChanging"
    OnSelectedIndexChanged="lvOfficers_SelectedIndexChanged">
    <LayoutTemplate>
        <table id="tblOfficers">
            <tr>
                <th style="width:20%"></th>
                <th colspan="2">Member Name</th>
                <th style="width:20%"></th>
                <th style="width:20%"></th>
            </tr>
            <tr>
                <th>Title</th>
                <th>Last</th>
                <th>First</th>
                <th>Phone</th>
                <th>Email</th>
            </tr>
            <asp:PlaceHolder ID="itemPlaceHolder" runat="server" />
        </table>
    </LayoutTemplate>
    <ItemTemplate>
        <tr>
            <td><asp:Label ID="lblRank" runat="server" Text='<#Eval("Rank") %>'></asp:Label></td>
            <td><asp:Label ID="lblLast" runat="server" Text='<#Eval("LastName") %>'></asp:Label></td>
            <td><asp:Label ID="lblFirst" runat="server" Text='<#Eval("FirstName") %>'></asp:Label></td>
            <td><asp:Label ID="lblPhone" runat="server" Text='<#Eval("HomePhone") %>'></asp:Label></td>
            <td><asp:Label ID="lblEmail1" runat="server" Text='<#Eval("PersonalEmail") %>'></asp:Label></td>
        </tr>
    </ItemTemplate>
</asp:ListView>
我可以在调试模式下单步执行,并看到在我的“GetOfficers”数据工厂生成的ListView中有8个类型为Person的元素

Person类包含子类:

  • 手机类:用于{
    家庭
    手机
    工作

  • 地址类{
    主要
    次要
    },包含用于指示联系方式的排名逻辑,以及

  • 会员资格课程。一个实例跟踪成员的
    ID
    JoinDate
    过期时间
    ,而另一个实例跟踪LifeMembership的相同元素

认为这个复杂的Person类导致了我的问题,我编辑了GetOfficers()方法以使用匿名列表:

protected void GetOfficers() {
    var officers = Personnel.GetOfficers();
    var data = from o in officers
                select new {
                    o.Rank,
                    o.LastName,
                    o.FirstName,
                    o.HomePhone,
                    o.PersonalEmail,
                };
    //var data = (from o in officers
    //            select new {
    //                o.Rank,
    //                o.LastName,
    //                o.FirstName,
    //                o.HomePhone,
    //                o.PersonalEmail,
    //            }).OrderBy(o => o.Rank).OrderBy(o => o.LastName);
    lvOfficers.DataSource = data;
    lvOfficers.DataBind();
}
一开始我很确定这会解决我的问题,所以我加入了两个OrderBy子句。当它不起作用时,我把它评论出来再试一次,但仍然没有成功

无论我尝试了什么,页面都会显示“Eval”文本,而不是实际数据

我猜答案很简单,但我忽略了,因为我使用相同的技术填充同一项目中其他页面中的数据


如何显示我的数据?开始时需要
%
,如下所示:-

'<%# Eval("Rank") %>'
“”

一开始你需要
%
如下:-

'<%# Eval("Rank") %>'
“”

您需要在评估开始时添加%符号


''

您需要在评估开始时添加%符号


''

Text=''
应该是
Text=''
Text=''
应该是
Text=''
漂亮!我知道这一定很简单。我通常为Windows窗体编写,所以当我尝试使用Web时会犯一些愚蠢的错误。谢谢欢迎:)ASP.NET代码块需要特别小心;)美丽的!我知道这一定很简单。我通常为Windows窗体编写,所以当我尝试使用Web时会犯一些愚蠢的错误。谢谢欢迎:)ASP.NET代码块需要特别小心;)