Зарегистрируйте Custom ModelBinder в Asp. NET Core 3.0 - PullRequest
0 голосов
/ 31 марта 2020

Используя. NET Framework MVC, можно зарегистрировать привязку пользовательской модели следующим образом:

ModelBinders.Binders.Add(typeof(MyModel), new MyModelBinder());

Тогда любое действие контроллера, имеющее параметр типа MyModel, будет автоматически использовать MyModelBinder чтобы связать его значение.

public ActionResult Test(MyModel o){
   // dunski!
   ...
}

Вроде как в. NET Core MVC, каждый раз необходимо указывать использование MyModelBinder, а не регистрировать его только один раз - или я ошибаюсь ?

public IActionResult Test([ModelBinder(BinderType = typeof(MyModelBinder))] MyModel o){
    ...
}

1 Ответ

1 голос
/ 31 марта 2020

Декорирование type, привязанного к модели, с атрибутом [ModelBinder] приведет к тому, что любой параметр того же типа (в действиях вашего контроллера) будет автоматически привязан с использованием подшивки модели, указанной в атрибуте [ModelBinder].

Пример:

[ModelBinder(BinderType = typeof(MyModelBinder))]
public class MyModel{
    public string Name{ get; set; }
    public string Age{ get; set; }
}

public class MyModelBinder : IModelBinder{
    public Task BindModelAsync(ModelBindingContext bindingContext)
    {
        // whatever model binding you need to do
        bindingContext.Result = ModelBindingResult.Success(new MyModel());

        return Task.CompletedTask;
    }
}

Подробнее об этом на официальной документации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...