Я бы посоветовал почти всегда использовать модели представлений.
Если вы используете шаблоны объектов по умолчанию ... им действительно не нравятся неплоские модели, и хотя вы можете их переопределить,это не всегда хорошая идея.Доменные модели обычно не плоские.В любом случае, все, что основано на ModelMetaData, проще с ViewModel.
Проверка также проще с ViewModel, так как у вас есть более сфокусированная модель, и иногда есть проверка, которая имеет смысл только в некоторых представлениях.
Создание ViewModels намного лучше и безопаснее, чем отправка моделей с помощью JsonResult ... Что ж ... вам НИКОГДА не следует отправлять доменные модели вне системы, даже если вы не используете ViewModels.Но легче использовать JsonResult, когда у вас есть готовая ViewModel.Также легче делать ошибки и предоставлять конфиденциальную информацию, когда вы привыкли использовать свои доменные модели повсеместно.
Изменения иногда проще, потому что изменение свойства в доменной модели не означает, что вы должны изменить всеваши представления, просто измените создание ViewModel (если вы используете какой-то тип сопоставления, это всего лишь одно изменение в привязке), хотя это не очень сильный момент IMO.
Некоторые другие преимуществаотделяют уровень представления от бизнес-уровня, и если вы используете объекты EF или непоко, их будет сложнее использовать в представлениях.
Если вы хотите устранить дублирование кода, выМожно подумать о создании фильтров, которые автоматически создают ваши модели ViewModels, и даже без фильтров действий с использованием картографа устраняется большое количество дублирования кода.
Кстати, я не вижу, как создать связыватель пользовательской модели проще, чем использовать ViewModels.