Список должен быть открыт только для того, что придумано ViewModel.
Из того, что я читаю в вашем посте, вы связываете фактический объект POCO непосредственно с представлением. Обычно это не в ваших интересах (одна из причин - то, что вы видите). Вы тесно связываете свои модели пользовательского интерфейса со своими объектами данных. Это не та ситуация, в которой вы хотите оказаться.
Вместо привязки POCO к представлению создайте посредника, модель представления, если хотите, что-то вроде этого.
public class SomeMethodViewModel
{
public SomeMethodViewModel()
{
DepartmentList = new List<Department>();
}
public int Id { get; set; }
public string SelectedDepartment { get; set; }
public List<Department> DepartmentList { get; set;
}
Теперь у вас есть модель представления, которая специфична для вашего действия и содержит именно ту информацию, которая вам нужна. Ваше действие теперь становится чем-то вроде:
public ActionResult SomeMethod()
{
var vm = new SomeMethodViewModel();
vm.DepartmentList = **Some_Method_To_Retrieve_List_Of_Departments**
return View(vm);
}
Теперь у вас есть строго типизированная модель для привязки к представлению, и ваш POCO остается чистым. Когда пользователь отправляет обратно, а вы проверяете данные, необходимо сопоставить их с вашей сущностью POCO.
Ответ Давео также верен. Я просто думаю, что упущенный момент заключается в том, что вы, кажется, связываете себя непосредственно с POCO.
Надеюсь, это поможет!