MVC4 - 如何最好地设置学校名称的模型,这将始终是下降

时间:2012-05-05 23:37:52

标签: asp.net-mvc

我希望我的模特的一部分有“学校”和“学期”。他们都会堕落。 将来,我希望能够轻松添加更多学校。

我只是想用这个吗?如果是这样,我如何处理随时出现在下拉列表中的内容。调用DropDownFor而不必在每个页面上制作列表?

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

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

1 个答案:

答案 0 :(得分: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)