ModelState не будет доступен, потому что он настроен связывателем модели.ModelBinder не связывал модель, поэтому он не запускал проверку, поэтому ModelState будет пустым.
Но это не останавливает вас от использования атрибутов и выполнения проверки.
Если вы используете атрибуты DataAnnotation, вы можете запустить проверку без привязки модели.
Учитываяэтот класс:
public class Widget
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
public decimal Price { get; set; }
}
Вы можете сделать это:
var widget = new Widget
{
Id = 12,
Price = 15.57M
};
var context = new ValidationContext(widget, null, null);
var results = new List<ValidationResult>();
if( Validator.TryValidateObject( widget, context, results, true ) )
{
//Validation Successful
}
else
{
//Validation Failed
}
Свойство Name не было задано, и TryValidateObject () завершится ошибкой.Сбор результатов будет иметь фактическую ошибку, которая произошла.