1

ViewBag の項目でドロップダウン リストを作成できますが、現在の項目を選択する方法がないようです。私はこれを達成するためにモデルを使用していません。ViewBag を使用したいだけです。それ以外の場合は、選択項目と表示する実際のデータをラップするためだけに別のモデル クラスを作成する必要があります。

私のコード:

@Html.DropDownList("MyFilter", (IEnumerable<SelectListItem>)ViewBag.SelectItems, "Show All" )

選択リストの値を設定するパラメーターはありません。私は何かを見落としていますか?DropDownListFor<> を使用した場合、これはモデルに対してのみ機能しますか?

4

1 に答える 1

2

MyFilterでプロパティを設定してみてくださいViewBag/ViewData

public ActionResult Index()
{
    ViewBag.SelectItems = new[]
    {
        new SelectListItem { Value = "1", Text = "item 1" },
        new SelectListItem { Value = "2", Text = "item 2" },
        new SelectListItem { Value = "3", Text = "item 3" },
    };

    // preselect the second item
    ViewBag.MyFilter = "2";

    return View();
}

しかし、ビュー モデルと強く型付けされたバージョンのヘルパーを使用することをお勧めします。

public ActionResult Index()
{
    var model = new MyViewModel
    {
        SelectItems = new[]
        {
            new SelectListItem { Value = "1", Text = "item 1" },
            new SelectListItem { Value = "2", Text = "item 2" },
            new SelectListItem { Value = "3", Text = "item 3" },
        },
        // preselect the second item
        MyFilter = "2"
    };
    return View(model);
}

そして、強く型付けされたビューで:

@model MyViewModel
...
@Html.DropDownListFor(x => x.MyFilter, Model.SelectItems, "Show all")
于 2012-04-26T08:52:14.653 に答える