Asp.Net MVC - FluentValidation - PullRequest
       1

Asp.Net MVC - FluentValidation

3 голосов
/ 28 октября 2010

Есть ли способ в Asp.Net MVC использовать какую-то свободную проверку?

Я имею в виду, вместо проверки моего poco вот так:

public class User {

    [Required]
    public int Id { get; set; }

Имея что-то подобное(во внешнем классе):

User.Validate("Required", "Id");

Возможно ли это в Asp.Net MVC 2 (или 3)?

Я знаю, что библиотека FluentValidation существует,но я хотел бы знать, позволяет ли что-то в ядре Asp.Net MVC это сделать.

Мне не нравится загрязнять мой POCO таким образом.Кроме того, что произойдет, если мне нужно проверить, скажем, что BeginDate до EndDate?С атрибутом вы не можете сделать это.

1 Ответ

9 голосов
/ 28 октября 2010

FluentValidation довольно хорошо интегрируется с ASP.NET MVC . Поставляется с подшивкой модели, позволяющей автоматически применять правила валидации.

Так, например:

[Validator(typeof(MyViewModelValidator))]
public class MyViewModel
{
    public int? Id { get; set; }
    public DateTime StartDate { get; set; }
    public DateTime EndDate { get; set; }
}

public class MyViewModelValidator : AbstractValidator<MyViewModel>
{
    public MyViewModelValidator()
    {
        RuleFor(x => x.Id)
            .NotNull();
        RuleFor(x => x.EndDate)
            .GreaterThan(x => x.StartDate);
    }
}

и затем действие вашего контроллера:

[HttpPost]
public ActionResult Index(MyViewModel model)
{
    if (ModelState.IsValid)
    {
        // The model is valid => process it
        return RedirectToAction("Success");
    }
    // Validation failed => redisplay the view in order to show error
    // messages
    return View(model);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...