Как создать собственный фильтр в ядре .net - PullRequest
0 голосов
/ 28 августа 2018

Я пробую одно из следующих безуспешно. 1. Проверьте значение свойства (имя пользователя) в привязке модели со значением другого свойства в модели (id, чтобы найти пользователя). 2. Подтвердите все отправленные модели для запроса на размещение в контроллере.

Как я могу создать собственный фильтр для перехвата всей модели в одно из значений свойства, используя другое значение в отправленной модели?

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете использовать Fluent Validator в .NET Core для таких проверок

Шаг 1: - Зарегистрируйте его при запуске

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc()
            .AddFluentValidation(fvc =>
                fvc.RegisterValidatorsFromAssemblyContaining<Startup>());
}

Шаг 2: -

Определите правила проверки как это

  public class RegistrationViewModel
    {
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Email { get; set; }
    }

    public class RegistrationViewModelValidator : AbstractValidator<RegistrationViewModel>
   {
    readonly IUserRepository _userRepo;



        public RegistrationViewModelValidator(IUserRepository userReo)
        {
            RuleFor(reg => reg.FirstName).NotEmpty();
            RuleFor(reg => reg.LastName).NotEmpty();
            RuleFor(reg => reg.Email).NotEmpty();
            RuleFor(reg => reg.FirstName).Must(DoesnotExist);
        }

  bool DoesnotExist(string userName)
    {
        return _userRepo.FindByUserName(userName) != null;
    }

}

Шаг 3: -

В контроллерах

[HttpPost]
public IActionResult FormValidation(RegistrationViewModel model)
{
    if (this.ModelState.IsValid) {
        ViewBag.SuccessMessage = "Great!";
    }
    return View();
}

См. Эту ссылку для полной документации

...