Подтвердить что ты не робот

Вручную ссылается на проверку ModelState

Я использую первый код ASP.NET MVC 3, и я добавил аннотации данных проверки для своих моделей. Вот пример модели:

public class Product
{
    public int ProductId { get; set; }

    [Required(ErrorMessage = "Please enter a name")]
    public string Name { get; set; }

    [Required(ErrorMessage = "Please enter a description")]
    [DataType(DataType.MultilineText)]
    public string Description { get; set; }

    [Required(ErrorMessage = "Please provide a logo")]
    public string Logo { get; set; }
}

На моем веб-сайте у меня многоэтапный процесс создания нового продукта - шаг 1 вы вводите сведения о продукте, шаг 2 - другую информацию и т.д. Между каждым шагом я храню каждый объект (т.е. объект Product) в сеансе, поэтому пользователь может вернуться к этому этапу процесса и изменить введенные данные.

На каждом экране у меня есть проверка на стороне клиента, работающая с новой проверкой jQuery.

Заключительный этап - это экран подтверждения, после которого продукт создается в базе данных. Однако, поскольку пользователь может перепрыгивать между этапами, мне нужно проверить объекты (Продукт и некоторые другие), чтобы убедиться, что они правильно выполнили данные.

Есть ли способ программно вызвать проверку ModelState для объекта с аннотациями данных? Я не хочу проходить через каждое свойство объекта и выполнять ручную проверку.

Я открыт для предложений о том, как улучшить этот процесс, если он упростит использование функций проверки модели ASP.NET MVC 3.

4b9b3361

Ответ 1

Вы можете вызвать метод ValidateModel в действии Controller (

Ответ 2

Вы можете использовать ValidateModel или TryValidateModel в области управления.

Когда модель проверяется, все валидаторы для всех свойств если хотя бы один вход формы связан с свойством модели. ValidateModel аналогичен методу TryValidateModel, за исключением того, что Метод TryValidateModel не вызывает исключение InvalidOperationException исключение, если проверка модели не выполняется.

ValidateModel - генерирует исключение, если модель недействительна.

TryValidateModel - возвращает значение bool, указывающее, действительно ли модель.

Если вы проверяете список моделей один за другим, вам нужно reset ModelState для каждой итерации, вызывая ModelState.Clear().

Ссылка на MSDN

Ответ 3

Я нашел, что это работает и работает точно так, как ожидалось.. показывая ValidationSummary для только что полученного объекта по методу GET-действия... до любого POST

Me.TryValidateModel(MyCompany.OrderModel)