11

ASP.NET C# Web サイトを構築しています。作成したオブジェクトのリストにバインドするドロップダウン リストがあります。ドロップダウン リストをバインドするコードは次のようになります。

protected void PopulateDropdownWithObjects(DropDownList dropdownlist, List<myObject>() myObjects)
{
    dropdownlist.DataValueField = "ID";
    dropdownlist.DataTextField = "Name";
    dropdownlist.DataSource = myObjects;  // my code fails here
    dropdownlist.DataBind();
}

ただし、メソッド内の 3 行目に到達すると、例外がスローされます。

DataBinding: 'myObject' does not contain a property with the name 'ID'.

ただし、デバッグ中に myObject.ID の値を明確に確認できます。イミディエイト ウィンドウでアクセスできます。パブリックであり、null ではありません。スペルは正しく、大文字と小文字を区別しています。

public class myObject
{
    public int ID;   // see? "ID" is right here!
    public string Name;

    public myObject(
        int id,
        string name
        )
    {
        this.ID = id;
        this.Name = name;
    }
}

このエラーの原因となるものは他にありますか?

4

1 に答える 1

42

プロパティではなくフィールドIDであるため、コードは機能しません。

以下に示すようにクラスを変更すると、コードは意図したとおりに機能します。

public class myObject
{
    public int ID    // this is now a property
    {
        get;
        set;
    }

    public string Name
    {
        get;
        set;
    }

    public myObject(
        int id,
        string name
        )
    {
        this.ID = id;
        this.Name = name;
    }
}
于 2013-08-30T18:44:46.663 に答える