0

アイテムがあるときにアイテムを選択するようにドロップダウンリストを取得しようとしていますが、決してそうではありません。私はこれをグーグルで検索し、さまざまな方法を試しましたが、それらはすべてViewBagを使用する代わりにリストを含むViewModelを使用しているようですが、可能であればViewBagに固執したいと思います.

私のコントローラー:

    [HttpGet]
    public ActionResult Index(int? id)
    {
        ViewBag.SelectList = new SelectList(rep.GetItemList(), "id", "type");
        if (id.HasValue)
        {
            var model = rep.GetItemByID(id.Value);
            if ( model != null )
            {
                return View(model);
            }
        }
        return View();
    }

私の見解:

    <div class="editor-field">
        @Html.DropDownListFor(model => model.itemID, (SelectList)ViewBag.SelectList)
        @Html.ValidationMessageFor(model => model.itemID)
    </div>

これには DropDownList で項目が選択されていません。また、ViewBag にリストを作成してから、View に SelectList を作成しようとしました。

    <div class="editor-field">
        @Html.DropDownListFor(model => model.itemID, new SelectList(ViewBag.SelectList, "id", "type", Model.itemID))
        @Html.ValidationMessageFor(model => model.itemID)
    </div>

しかし、どれもうまくいかないようです。だから、私が間違っていることを見つけられる人がいるのだろうかと思っていましたか?

4

2 に答える 2

0

itemIDビューに渡すモデルにプロパティが設定されていることを確認してください

if (id.HasValue)
        {
            var model = rep.GetItemByID(id.Value);
            model.itemID=id.Value;
            return View(model);
        }
于 2012-08-12T22:33:50.943 に答える
0

SelectList は不変であるため、最初から選択した値を設定してみます。

  [HttpGet]
        public ActionResult Index(int? id)
        {
            if (id.HasValue)
            {
                ViewBag.SelectList = new SelectList(rep.GetItemList(), "id", "type", id );
                var model = rep.GetItemByID(id.Value);
                if ( model != null )
                {
                    return View(model);
                }
            }
            else
            {
                ViewBag.SelectList = new SelectList(rep.GetItemList(), "id", "type");
            }
            return View();
        }

ビューでは、次のように使用します。

@Html.DropDownListFor(model => model.itemID, (SelectList)ViewBag.SelectList, "Please select...")
于 2012-08-13T00:48:55.127 に答える