[英]Access to list element on codebehind from aspx
我在代碼隱藏上有以下方法
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;
}
然后在我的 aspx 上,我有以下 html 和 C# 代碼
<tbody>
<% foreach (var item in Exec()) { %>
<tr><td><%=item.Name %> </td></tr>
<% } %>
</tbody>
這會顯示以下錯誤消息:
對象不包含名稱的定義。
我做錯了什么?
PD:如果我將 item.Name 更改為 item,我可以正確地看到我的整個列表。
這是預期的行為。 注意方法Exec
的返回類型,它是object
。 此類型沒有任何名為Name
屬性。 您需要將此返回類型更改為具有您要使用的屬性Name
的對象,或者僅返回List<string>
,如果您要使用的唯一屬性是Name
。
第一種方法:
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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.