簡體   English   中英

從 aspx 訪問代碼隱藏上的列表元素

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM