C# 从aspx访问codebehind上的列表元素
我对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
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>