Привязка модели перечисления [FromRoute] ведет себя иначе, чем [FromBody] в ядре .net.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Привязка модели перечисления [FromRoute] ведет себя иначе, чем [FromBody] в ядре .net.

Сообщение Anonymous »

Модель привязки с перечислением ведет себя по-разному, и я не могу получить правильное значение при передаче информации, выходящей за пределы перечисления.

Я иметь перечисление TestEnum, содержащее Test1 = 1, Test2 = 2, Test3 = 3.

В [HttpPost] или [HttpPut] с помощью [ FromBody], мой объект DTO правильно получает значение перечисления, даже если я передаю другое значение, например 5.

Однако в Get/Put используя [FromRoute], мой объект DTO правильно получает перечисление, когда введенные значения находятся в пределах предела перечисления (1, 2 или 3).

Если я При передаче 5 значение перечислителя становится нулевым, в отличие от [FromBody], который может нормально получать значение 5, даже если оно находится за пределами закодированных Test1, Test2 и Test3.

Код: Выделить всё

public enum TestEnum
{
Test1 = 1,
Test2 = 2,
Test3 = 3
}
Он прекрасно получает значения, даже выходящие за пределы перечисления.

Код: Выделить всё

[HttpPost]
public async Task Post([FromBody]TestCommand command)
Здесь значения в [FromRoute] и [FromBody] принимаются идеально, когда они находятся в пределах границы перечисления.
Если выход за пределы диапазона, [FromRoute] получает ноль, а [FromBody] получает 5.

Код: Выделить всё

[HttpPut("{id:int}")]
public async Task Put([FromRoute]TestEnum id, [FromBody]TestCommand command)
Здесь в [FromRoute] значения принимаются идеально, когда они находятся в пределах границы перечисления.

Если значение [FromRoute] выходит за пределы диапазона, оно получает ноль.

Код: Выделить всё

[HttpGet("{id:int}")]
public async Task GetById([FromRoute]TestEnum id)

Я хотел бы получить значение, даже если оно выходит за пределы закодированного предела перечисления.

Подробнее здесь: https://stackoverflow.com/questions/574 ... n-net-core
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»