Как вручную проверить модель с атрибутами?

Вы можете использовать что-то вроде этого

Вне

lb

Внутри

lb

Fiddle

29
задан BrunoLM 16 June 2013 в 23:40
поделиться

3 ответа

Вы можете использовать Валидатор для этого.

var context = new ValidationContext(u, serviceProvider: null, items: null);
var validationResults = new List<ValidationResult>();

bool isValid = Validator.TryValidateObject(u, context, validationResults, true);
63
ответ дан James Santiago 16 June 2013 в 23:40
поделиться

Я сделал запись в Документации переполнения стека, объясняющую, как это сделать:

Контекст проверки

Любая проверка требует контекста, чтобы дать некоторую информацию о том, что проверяется. Это может включать различную информацию, такую ​​как проверяемый объект, некоторые свойства, имя, отображаемое в сообщении об ошибке и т. Д.

ValidationContext vc = new ValidationContext(objectToValidate); // The simplest form of validation context. It contains only a reference to the object being validated.

После создания контекста существует несколько способов проверки.

Проверка объекта и всех его свойств

ICollection<ValidationResult> results = new List<ValidationResult>(); // Will contain the results of the validation
bool isValid = Validator.TryValidateObject(objectToValidate, vc, results, true); // Validates the object and its properties using the previously created context.
// The variable isValid will be true if everything is valid
// The results variable contains the results of the validation

Проверка свойства объекта

ICollection<ValidationResult> results = new List<ValidationResult>(); // Will contain the results of the validation
bool isValid = Validator.TryValidatePropery(objectToValidate.PropertyToValidate, vc, results, true); // Validates the property using the previously created context.
// The variable isValid will be true if everything is valid
// The results variable contains the results of the validation

И еще

Чтобы узнать больше о проверке вручную, см. :

25
ответ дан Maxime 16 June 2013 в 23:40
поделиться

Поскольку вопрос задается конкретно о ASP.NET MVC, вы можете использовать TryValidateObject внутри своего действия Controller .

Требуемая перегрузка метода: TryValidateModel(Object)

Проверка указанного экземпляра модели.

Возвращает true, если проверка модели прошла успешно; в противном случае неверно.

Ваш измененный исходный код

[HttpPost]
public ActionResult NewUser(UserViewModel userVM)
{
    User u = new User();
    u.Name = null;

    if (this.TryValidateObject(u))
    {
        TempData["NewUserCreated"] = "New user created sucessfully";
        return RedirectToAction("Index");
    }

    return View();
}
0
ответ дан WoIIe 16 June 2013 в 23:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: