ASP.NET CORE 2.1 Привязка модели FromRoute и FromBody - PullRequest
0 голосов
/ 18 января 2019

Я читаю документацию Microsoft по созданию веб-API , но не вижу примера того, как объединить параметры маршрута и тела, кроме разработки связывателя пользовательской модели. Я полагаю, что чего-то не хватает, потому что разработка пользовательского связующего для модели кажется излишней для этой общей задачи. Как я могу указать своему приложению создать модель из параметров маршрута и полезной нагрузки тела?

Request:
PUT /business/f8e5cf33-40b1-4b8e-8280-b1b60a459154
{"name": "MyBusiness", "street": "123 Main Street"}

Response:
400
{"Id": ["'Id' must not be empty."]}

// BusinessController
[Route("business/{id}")]
[ApiController]
public class BusinessController : Controller {
    [HttpPut]
    [ProducesResponseType(400)]
    public ActionResult PutAsync(BusinessModel business) {
      ...
    }
}

// BusinessModel
class BusinessModel {
    // The `[FromRoute]` annotation has no affect
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string Street { get; set; }
}

1 Ответ

0 голосов
/ 18 января 2019

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

   // BusinessController
    [Route("business/{id}")]
    [ApiController]
    public class BusinessController : Controller {
        [HttpPut]
        [ProducesResponseType(400)]
        public ActionResult PutAsync([FromBody]BusinessModel business, [FromRoute] int id) {
          ...
        }
    }

И после этого присвойте этот идентификатор модели, если она является ее частью.

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