0

ビューにドロップダウンリストを入力しようとしていたので、次のようになりました。

タイプList<string>のモデルを持つASP.NETMVCDropDownListFor

そこにある解決策はうまく機能します。これで、「プロジェクト」モデルを取り込む「新しいプロジェクトの作成」ビューができました。モデルには、特に次のものがあります。

 public int projectPrimaryEmployeeID
    {
        get
        { return _projectPrimaryEmployeeID; }
        set
        {
            _projectPrimaryEmployeeID = value;
        }
    }

    public IEnumerable<SelectListItem> employeeList { get; set; }

GETアクションの結果では、employeeListにデータベースのアイテムを入力していますが、ドロップダウンは正常に入力されています。

しかし、今では自分のモデル(すべてのプロジェクトのリスト)を列挙するビューがあり、プロジェクトごとに、従業員のリストを何度も表示するプルダウンを表示する必要があります。

「すべてのプロジェクトを表示」ビューには次のものがあります。

@model IEnumerable<MVCCodeProject.Models.project>

..私が言っていること:

@Html.DropDownListFor(modelItem => item.projectPrimaryEmployeeID, new     SelectList(Model.employeeList, "Value", "Text"))

しかし、エラーが発生します:

'System.Collections.Generic.IEnumerable<MVCCodeProject.Models.project>' does not contain a definition for 'employeeList' and no extension method 'employeeList' accepting a first argument of type 'System.Collections.Generic.IEnumerable<MVCCodeProject.Models.project>' could be found (are you missing a using directive or an assembly reference?)

モデルを列挙している間、プルダウンを表示するためのルートはおそらく少し異なるようです、何か助けはありますか?

4

1 に答える 1

1

したがって、最初にモデルをIListに変更する必要があります。

@model IList<MVCCodeProject.Models.project>

次に、インデックスを使用して、リストを反復処理し、そのリスト内の各アイテムにバインドできるようになります。

@for (int i = 0; i < Model.Count(); i++)
{
    Html.DropDownListFor(proj => proj[i], new SelectList(proj.employeeList, "Value", "Text"));
}

テンプレートを使用するなど、これを行うための他の戦略もあります。詳細については、こちらをご覧ください:http: //haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

于 2012-08-02T22:36:52.377 に答える