вы на самом деле не следуете передовым методам разработки приложений MVC.
Об ошибке:
Html.DropDownList ищет данные типа IEnumerable<SelectListItem>
в модели, но вместо этого находит int
(DepartmentId
)
ваш ViewModel не должен иметь метод MapTo, он нарушает принцип единой ответственности
в вашем методе действия вы не проводите проверку на стороне сервера, например:
if(!ModelState.IsValid)
{
//rebuild the viewmodel and return the view
}
ловить все в действии тоже не нужно (и плохо)
Вы делаете это в Global.asax Application_Error
вместо
атрибуты, такие как HiddenInput, ScaffoldColumn, Validation и все, что связано с пользовательским интерфейсом, должны быть на вас ViewModel, а не в вашей доменной модели
хороший пример использования viewmodels & validation & mapping между entity <-> viewmodel Я рекомендую вам посмотреть решение Samples из здесь
Я сделал этот пример, и его основная цель - продемонстрировать использование ValueInjecter (технология отображения)