我正在尝试改进我在MVC模型和视图中创建SelectLists的方式。
有人在我的代码的早期版本中评论过我对new
的使用过多。在下面显示的模型中,我确实看到在SelectList的定义中使用new
两次。但是,我不知道如何编写代码,这是我在示例中看到的唯一方法。还有更好的方法吗?
在模型类中,我将SelectList值分配给IEnumerable<StudentRoster> StudentRosters
,然后可以在View中访问。
这就是我在View中创建DropDownList的方法。
<p>Select a campus: @Html.DropDownListFor(m=>m.SelectedCampus,Model.CampusList)
这是我在模型中定义SelectList的方法。
public class SampleViewModel
{
// This IEnumerable is a SelectList in the Html.BeginForm() block
public IEnumerable<SelectListItem> CampusList { get; set; }
public string SelectedCampus { get; set; }
// This list is the "table" shown in the View that the SelectList filters
public IEnumerable<StudentRoster> StudentRosters { get; set; }
}
控制器:
public ActionResult FilterableIndex(string SelectedCampus="MRA")
{
StudentRosterViewModel vm = new StudentRosterViewModel();
vm.StudentRosters = db.StudentRosters
.Where(m => m.Campus == SelectedCampus)
.ToList();
vm.SelectedCampus = SelectedCampus;
vm.CampusList = new SelectList(new List<string>
{"CRA","DRA","MRA","PRA" });
return View(vm);
}
这是正确的编码还是这是一个养成坏习惯的例子?
答案 0 :(得分:1)
您的视图模型,只需在项目构建时将项目提供给视图模型,并从中生成SelectListItems。 @Rubix_Revenge,这是控制器的工作。
无论如何,这是正确的方式
CampusList = new SelectList(new List<string> {"CRA","DRA","MRA","PRA" });