C# 从aspx访问codebehind上的列表元素

C# 从aspx访问codebehind上的列表元素,c#,asp.net,C#,Asp.net,我对codebehind有以下方法 Public List<object> Exec() { List<object> result = New List<object>(); DataTable results = New DataTable(); // methodToExecuteSP is = public DataSet results = methodToExecuteSP; foreach (Data

我对codebehind有以下方法

Public List<object> Exec()
{
    List<object> result = New List<object>();
    DataTable results = New DataTable();

    // methodToExecuteSP is = public DataSet 
    results = methodToExecuteSP;

    foreach (DataRow i in results.Rows)
    {
        result.Add(new { Name = i[“Name”] });
    }

    return result;
}
Public List Exec()
{
列表结果=新列表();
DataTable结果=新DataTable();
//methodToExecuteSP is=公共数据集
结果=方法执行ESP;
foreach(results.Rows中的数据行i)
{
添加(新的{Name=i[“Name”]});
}
返回结果;
}
然后在我的aspx上,我有以下html和C代码


这将显示以下错误消息:

对象不包含名称的定义

我做错了什么


PD:如果我将item.Name更改为item,我可以正确地查看整个列表。

这是预期的行为。注意方法
Exec
的返回类型,它是
对象
。此类型没有任何名为
Name
的属性。如果要使用的唯一属性是
名称
,则需要将此返回类型更改为具有要使用属性的对象
名称
,或者只返回
列表

第一种方法:

公共类人物
{
公共字符串名称{get;set;}
}
公开名单执行官()
{
var persons=新列表();
var results=新数据表();
//methodToExecuteSP is=公共数据集
结果=方法执行ESP;
foreach(results.Rows中的DataRow行)
{
Add(newperson{Name=row[“Name”].ToString()});
}
返回人员;
}
第二种方法:

public List Exec()
{
变量名称=新列表();
var results=新数据表();
//methodToExecuteSP is=公共数据集
结果=方法执行ESP;
foreach(results.Rows中的DataRow行)
{
添加(行[“名称”].ToString());
}
返回姓名;
}

为什么不简单地构建一个
列表
呢?如果要在该方法的范围内使用对象,则存在匿名方法。当你想从多个方法中使用对象时,你不应该使用匿名对象。也许你想创建一个只有一个属性“Name”的新类,例如class Student,然后你可以创建一个列表
<tbody>
    <% foreach (var item in Exec()) { %>
        <tr><td><%=item.Name %> </td></tr>
    <% } %>
</tbody>
public class Person
{
    public string Name { get; set; }
}

public List<Person> Exec()
{
    var persons = new List<Person>();

    var results = New DataTable();

    // methodToExecuteSP is = public DataSet 
    results = methodToExecuteSP;

    foreach (DataRow row in results.Rows)
    {
        result.Add(new Person { Name = row[“Name”].ToString() });
    }

    return persons;
}

<tbody>
<% foreach (var person in Exec()) { %>
    <tr><td><%=person.Name %> </td></tr>
<% } %>
</tbody>
public List<string> Exec()
{
    var names = new List<string>();

    var results = New DataTable();

    // methodToExecuteSP is = public DataSet 
    results = methodToExecuteSP;

    foreach (DataRow row in results.Rows)
    {
        result.Add(row[“Name”].ToString());
    }

    return names;
}

<tbody>
<% foreach (var name in Exec()) { %>
    <tr><td><%=name%> </td></tr>
<% } %>
</tbody>