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 回答