如何为viewbag元素的下拉列表赋值?

时间:2013-05-28 06:46:38

标签: asp.net-mvc asp.net-mvc-3

我正在使用Razor语法开发MCV应用程序。 我已将元素传递到下拉列表,我想在viewbag元素的下拉列表中显示所选项目。

下面的代码显示了下拉代码。

  

控制器代码

      [SessionFilterAction]
            public ViewResult Details(int id)
    {

 ViewBag.HODList = new SelectList(db.Employees.Where(e => e.DesignationType == "HOD"), "Id", "FullName");
            ViewBag.ItemToBeSelectedInList = 5;
            return View(paymentadvice);
    }
  

查看代码

if(ViewBag.DesignationTypeOfLoggedUser == "Staff")
{
    @Html.DropDownList("HODList", String.Empty ,new { ???? })
}

现在我想使用viewbag元素,它将选择下拉列表中的一个项目。 这该怎么做 ?

1 个答案:

答案 0 :(得分:1)

ViewBag旨在将数据从控制器传递到视图而不是其他方式。 您可以使用HTTP Get方法填充下拉列表,如

[HttpGet]
public MyAction()
{
    MyModel model = new MyModel();

// model.DropDwonValues是模型中的通用列表类

    model.DropDwonValues= db.Values //replace with your db table
        .Select(v => new DropDownItem
            {
                Text = v.Name //value to go in your text field
                Value = v.Id.ToString() //value to go in your ID field
            })
        .ToList();   

    return View(model);
}

然后在您看来,您可以这样做:

@using(Html.BeginForm())
{
    @Html.LabelFor(m => m.DropDownId)
    @Html.DropDownListFor(m => m.DropDownId , Model.DropDwonValues )
}