FromRoute и FromQuery в одной и той же модели дают разные результаты между asp net core 2.2 и 3.0 - PullRequest
0 голосов
/ 04 октября 2019

Я не знаю, является ли это какой-либо другой конфигурацией по умолчанию, но, создав проект asp.net core 2.2 и другой проект asp.net core 3.0, я получаю разные результаты в привязке модели.

public class Dto
{
     public string Prop1 { get; set; }

     public string Prop2 { get; set; }      

     public string Prop3 { get; set; }                  

     public string Prop4 { get; set; }

}
[HttpGet("test/{prop1:alpha}/{prop2:alpha}")]
public ActionResult<Result> Test(Dto dto)
{
}

Приведенный выше код прекрасно работает в ядре asp.net 2.2 при вызове URL:

https://localhost:xxxx/test/aaa/bbb/?prop3=ccc&prop4=ddd

Однако в ядре asp.net 3 объект имеет значение null.

если я использую [FromRoute], он просто получает значения prop1 и prop2.

Если я использую [FromQuery], он просто получает значения prop3 и prop4.

Как настроить asp.net core 3, чтобы он получал значения маршрута и строки запроса, например asp.net core 2.2?

Обратите внимание, что в asp.net core 2.2 я не сообщил ни [FromRoute], ни [FromQuery], которые кажутсямне обязательно сейчас.

Ответы [ 2 ]

0 голосов
/ 04 октября 2019

Со временем можно получить те же результаты, используя атрибут ApiController, однако, установив для свойства SuppressInferBindingSourcesForParameters значение true.

Проблема решена.

0 голосов
/ 04 октября 2019

ОК, я обнаружил, что проблема связана с использованием атрибута ApiExplorer.

Без него он работает именно так, как мне хотелось бы.

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