Это вопрос инкапсуляции. Я поместил все, что мне нужно для визуализации представления (включая данные выпадающего списка и проверку на стороне сервера) в объект ViewModel. Таким образом, у меня нет вещей, разбросанных по сильным ветрам.
Я не пурист, но идея помещать нетипизированную информацию в ViewData и приводить ее к правильному типу в представлении, мне просто неудобна. Мне еще предстоит найти ситуацию, в которой это имеет смысл, если только я не передаю небольшие фрагменты информации представлению, которое не имеет ничего общего с ViewModel или базовой моделью базы данных.
Небольшие кусочки информации, которые я бы помещал в ViewData, могли бы включать в себя такие вещи, как ссылки на страницы или, возможно, ссылки ReturnUrl, которые я не хочу вставлять в URL-адрес в качестве параметра, а также не хочу, чтобы они загрязняли мой объект ViewData.