Это обсуждается в книге Стива Сандерсона asp.net mvc 2, стр. 486.
Создайте пользовательский атрибут ValidateIncomingValuesOnlyAttribute, который наследуется от ActionFilterAttribute, и примените его к классу контроллера.
Переопределить метод OnActionExecuting:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var modelState = filterContext.Controller.ViewData.ModelState;
var incomingValues = filterContext.Controller.ValueProvider;
var keys = modelState.Keys.Where(x => !incomingValues.ContainsPrefix(x));
foreach(var key in keys)
{
modelState[key].Errors.Clear();
}
}
Таким образом вы проверяете данные, относящиеся только к каждому шагу в мастере. Затем вам потребуется страница подтверждения без ввода данных, чтобы отправить проверенные данные на сервер.
Но, прежде всего, прочитайте книгу Стива Сандерсона, она дает рабочее решение этой и вашей другой проблемы.
Добавление:
Если вместо вышеперечисленного вы решите отобразить модель представления, будьте осторожны, поскольку вам придется либо:
а. Не украшайте свойства viewmodel атрибутами проверки данных, а в этом случае вы проверяете их только после того, как пользователь заполнил весь мастер, и попытаетесь отправить их в базу данных. С точки зрения пользователя это было бы очень неприятно ...
б. Иначе вам все равно придется использовать технику, описанную S Sanderson, то есть очистить все ошибки валидации, которые не относятся к полям на текущем шаге.
Я не вижу принятого ответа как ответа на вопрос, который был задан.