Aspnetcore: Поддержка нескольких [FromRoute], [FromHeader], [FromBody] и т. Д. В одном объекте.

Созданный на 23 янв. 2018  ·  3Комментарии  ·  Источник: dotnet/aspnetcore

Я пытаюсь создать объект со всеми соответствующими данными из привязанного запроса.

Представьте себе такое действие

[HttpPost({id})]
public virtual async Task<IActionResult> Post(PostRequest model)

И модель могла быть такой

public class PostRequest
{
    [FromRoute]
    public int Id { get; set; }

    [FromHeader]
    public string SomeHeader { get; set; }

    [FromBody]
    public int Foo { get; set; }
    [FromBody]
    public string Bar { get; set; }
    [FromBody]
    public string Baz { get; set; }
}

К сожалению, несколько [FromBody] не допускаются.

Если бы это было разрешено и работало так, как ожидалось, я мог бы реализовать такой общий контроллер CRUD

[HttpPost({id})]
public virtual async Task<IActionResult> Post(PostRequest model)
{
    var command = _mapper.Map<TCommand>(model); // AutoMapper
    await _mediator.Send(command); // MediatR
    // omitted for brevity
    return Created();
}

Очевидно, это выглядело бы иначе.
Идея состоит в том, чтобы удалить из контроллера всю логику, которая не связана с API / MVC. Итак, все, что делает контроллер, это

  • проверить модель
  • извлечь нужные данные из запроса
  • отправить соответствующие данные обработчику
  • вернуть соответствующий HTTP-ответ

Теперь у меня есть одна реализация для всех потребностей моего CRUD-контроллера - и я очень обрадовался!

Это не обязательно должно быть [FromBody] это может быть другой атрибут. Например, [FromBodyPart] , [BindFromBody] или что-то совершенно другое.

Было бы это возможно?

area-mvc

Самый полезный комментарий

Спасибо за ваш запрос функции. Мы рассмотрим эту функцию в течение следующего периода планирования выпуска и соответствующим образом обновим статус этой проблемы.

Все 3 Комментарий

Спасибо за ваш запрос функции. Мы рассмотрим эту функцию в течение следующего периода планирования выпуска и соответствующим образом обновим статус этой проблемы.

Я думаю, это было бы решением моего вопроса SO, на который я до сих пор не ответил:
https://stackoverflow.com/questions/44261111/how-to-model-bind-path-segment-to-object-property

Спасибо что связались с нами.
После переоценки этого вопроса мы решили не предоставлять такую ​​функцию, поскольку она не соответствует принципам, которым мы пытаемся следовать в структуре.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

dotNETSanta picture dotNETSanta  ·  3Комментарии

markrendle picture markrendle  ·  3Комментарии

FourLeafClover picture FourLeafClover  ·  3Комментарии

TanvirArjel picture TanvirArjel  ·  3Комментарии

groogiam picture groogiam  ·  3Комментарии