0

我正在使用 Razor 语法开发 MCV 应用程序。我已将元素传递给下拉列表,并且我想将任何随机项传递给视图,因为除了 item 之外,将选择下拉列表项。下面的代码显示下拉菜单代码。

控制器代码

  [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 元素,它将选择下拉项目之一。这该怎么做 ?

4

2 回答 2

1

有一个constructor of the SelectList class允许您指定要选择的项目的 id:

[SessionFilterAction]
public ViewResult Details(int id)
{
    int itemToBeSelectedInList = 5;
    ViewBag.HODList = new SelectList(
        db.Employees.Where(e => e.DesignationType == "HOD"), 
        "Id", 
        "FullName",
        itemToBeSelectedInList
    );
    return View(paymentadvice);
}

话虽如此,使用 ViewBag 是不好的做法,我建议您切换到在视图中使用视图模型和强类型助手。

于 2013-05-28T08:14:02.327 回答
1

@Html.DropDownList 选择带有 Selected 标志的项目 (SelectListItem.Selected = true)。SelectList 具有自动为指定项目设置此标志的构造函数:

public SelectList(IEnumerable items, string dataValueField, string dataTextField, object selectedValue)

selectedValue 应该是将被选中的员工的 ID:

var employees = db.Employees.Where(e => e.DesignationType == "HOD").ToList();
var selectedEmployeeId = employess[5].Id;
ViewBag.HODList = new SelectList(employees, "Id", "FullName", selectedEmployeeId );
于 2013-05-28T08:27:29.633 回答