Razor MVC 4中的下拉列表

时间:2013-08-23 15:44:25

标签: asp.net-mvc razor html.dropdownlistfor

我想在不使用ViewBag的情况下将DropDownList添加到我的View中,几个静态选项,我希望它与Model绑定。我怎么能这样做?

1 个答案:

答案 0 :(得分:4)

好吧,首先编写视图模型:

public class MyViewModel
{
    public string SelectedValue { get; set; }
    public IEnumerable<SelectListItem> Values { get; set; }
}

然后是一个控制器动作,它将填充此视图模型并将其传递给视图:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel();

        // TODO: those values will probably be coming from a database or something
        model.Values = new[]
        {
            new SelectListItem { Value = "1", Text = "item 1" },
            new SelectListItem { Value = "2", Text = "item 2" },
            new SelectListItem { Value = "3", Text = "item 3" },
        };

        return View(model);
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        string selectedValue = model.SelectedValue;
        return Content("You selected: " + selectedValue);
    }
}

最后是一个强类型视图,您可以在其中使用Html.DropDownListFor帮助程序:

@model MyViewModel

@using (Html.BeginForm())
{
    @Html.DropDownListFor(x => x.SelectedValue, Model.Values)
    <button type="submit">OK</button>
}

帮助器需要2个参数:第一个是lambda表达式到视图模型上的标量属性,它将保存所选值,第二个是IEnumerable<SelectListItem>属性,它保存所有可用值显示在下拉列表中。