0

我希望我的模型的一部分有“学校”和“学期”。它们都将是下拉菜单。将来,我希望能够轻松添加更多学校。

我只想用这个吗?如果是这样,我该如何处理下拉菜单中显示的内容。DropDownFor 被调用而不必在每个页面上制作列表?

    [Required(ErrorMessage = "You must select a school")]
    [Display(Name = "School")]
    public string school { get; set; }

我看到了一个使用 SelectList 而不是学校的示例,但对如何使用它有点困惑,因为存储在数据库中的信息只是一个学校名称,而不是整个列表。SelectList 是在这种情况下使用的正确类型吗?除了我应该使用的选择列表和字符串之外,还有其他东西吗?谢谢。

4

1 回答 1

2

您应该同时使用选择列表和字符串。SelectList将保留下拉选项,school并将保留用户选择的值

像这样的东西

//view model
public IEnumerable<SelectListItem> SchoolsSelectList { get; set; }
public string School { get; set; }



//controller action
public ActionResult Create()
{
     SchoolSemesterViewModel model = new SchoolSemesterViewModel();
     model.SchoolsSelectList = SchoolRepository.Schools.Select(x=> new SelectListItem()
     {
          Text = x.SchoolName,
          Value = x.SchoolName
     });

     return View(model);
}

//view

 @Html.DropDownListFor(model => model.School, Model.SchoolsSelectList)
于 2012-05-06T08:18:59.747 回答