1

一日中試してみましたが、ドロップダウン リストの読み込みに失敗しました。その単純なアプリケーションであるはずです。新しい従業員を作成する必要がありますが、ビューの作成では、StoresMst テーブルから別の [Store Names] が入力されたドロップダウン リストがレンダリングされます。アイデアは、従業員を店舗に関連付けることです。以下は私のコードです

viewModel クラスで

    public class EmployeeStoreViewModel
    {
        private JCOperationsDataContext  db = new JCOperationsDataContext ();

        //public Employee employee { get; set; }
        public IEnumerable<SelectListItem> Stores { get;set;}
        public int storeID { get; set; }         
    }

ActionLink の作成で

        public ActionResult Create()
        {
            //ViewData["PartialStores"] = repository.GetStoreNames();
            var model = new EmployeeStoreViewModel()
            {   
                //Stores= jc.StoreMsts.OrderBy(o=> o.StoreID).ToList<SelectListItem>();

                Stores = jc.StoreMsts
                        .ToList()
                        .Select(x => new SelectListItem
                        {
                            Text = x.StoreID.ToString(),
                            Value = x.StoreName
                        }),                        
            };

            return View(model);
        }

ビュー内 (ModelView クラスへの参照を追加)

<div class="editor-field">
    @{Html.DropDownListFor(model => model.storeID, new SelectList (Model.Stores));}
</div >

ページはエラーなしで読み込まれますが、DropDownbox はレンダリングされず、データが取り込まれません。何か不足していますか?VS2010 Ultimate で MVC3 を使用しています。注意: MVC2 でも同じことを試してみましたが、うまくいきました。

4

2 に答える 2

2

呼び出し中の中括弧を削除しDropDownListForます。コードでは、かみそりはそれを通常のメソッド呼び出しとして扱い、メソッドの戻り値を無視します。razor を使用して html を出力する正しい構文は次のとおりです。

<div class="editor-field">
    @Html.DropDownListFor(model => model.storeID, new SelectList (Model.Stores))
</div >
于 2012-07-14T12:47:25.880 に答える
0

ビュー モデルに Stores オブジェクトがあり、そのコレクションを渡す前に設定しているため、「新しい SelectList」を使用する必要はなく、コレクションでそのプロパティを参照するだけで済みます。また、ドロップ リストを中括弧で囲む必要はありません。そのように評価されません。必要なのはこれだけです。

<div class="editor-field">
@Html.DropDownListFor(model => model.storeID, Model.Stores);
</div >

編集: コードをもう一度見て、ドロップダウン リストがこのように読み込まれない場合は、コレクション タイプを IEnumerable ではなく List に変更する必要がある場合があります。

于 2012-07-14T12:56:55.333 に答える