public partial class Department
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public Department()
{
this.Employees = new HashSet<Employee>();
}
public int ID { get; set; }
public string Name { get; set; }
public Nullable<bool> IsSelected { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Employee> Employees { get; set; }
}
public ActionResult Create()
{
List<SelectListItem> DeptList = new List<SelectListItem>();
foreach (Department tempdept in db.Departments)
{
SelectListItem sli = new SelectListItem
{
Text = tempdept.Name,
Value = tempdept.ID.ToString(),
Selected = tempdept.IsSelected.HasValue ? tempdept.IsSelected.Value : false
};
DeptList.Add(sli);
}
ViewBag.Departments = DeptList;
return View();
}
<div class="form-group">
@Html.LabelFor(model => model.DepartmentID, "DepartmentID", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.DepartmentID,(IEnumerable<SelectListItem>)ViewBag.Departments,new { @class = "form-control" ,
@selected = ViewBag.Departments.Selected.HasValue && ViewBag.Departments.Selected.Value ? "selected" : null
})
@Html.ValidationMessageFor(model => model.DepartmentID, "", new { @class = "text-danger" })
</div>
</div>
Выше я упомянул код модели, контроллер и вид.По сути, я пытался установить элемент DropDownList по умолчанию, беря пользовательский ввод из базы данных, используя поле IsSelected в таблице Department.Таким образом, если в столбце IsSelected
в базе данных соответствующего отдела указано 1
, а во всех остальных NULL
или 0
, то для отдела, имеющего 1
, по умолчанию устанавливается selected
.элемент в DropDownList при наличии Get
.
Но как только я запускаю свой код, я сталкиваюсь с ошибкой
('' System.Collections.Generic.Список 'не содержит определения для' Выбранный '')
Невозможно выяснить такое поведение.
Заранее спасибо !!!