Моя проблема заключается в том, что когда я отправляю любое целочисленное значение, начинающееся с нуля (012345) в теле полезной нагрузки, в веб-API C #, полученное значение не имеет первой цифры (12345). он игнорирует ноль. как заставить API получать необработанные данные?

[HttpPost]
    public void insertdata([FromBody]Model model)
    {
     // model.id=1234    
    }

Полезная нагрузка

{id:01234}
1
raveendra reddy 10 Ноя 2020 в 16:18

4 ответа

Лучший ответ

Целое число не может иметь начальных нулей, как упоминалось @Richard в комментариях.

Вместо этого вы должны использовать в своей модели строку.

public class YourModel {
   public string id {get;set;}
}

[HttpPost]
public void insertdata(YourModel model)
{
   model.id=01234    
}
5
rashidali 10 Ноя 2020 в 13:31

Я думаю, это зависит от DataType свойства id в вашем объекте модели.

Если id был строкой, например, начальные нули, как в 01234, будут сохранены. При условии, что ваше требование не особо ограничивает вас, чтобы сделать свойство id int

public class Model 
{

public string id { get; set;}
...

}
2
Manoj 10 Ноя 2020 в 16:58

Отправьте любое целочисленное значение в виде строки «012345» - payload {id: «01234»}. Другой способ достичь этого - использовать string.PadLeft - model.Id.ToString (), PadLeft (5, «0»);

1
Sergey 10 Ноя 2020 в 13:33

Poc visual studio c# console

Доброе утро, дружище,

Следуйте примеру, который я сделал в POC, при этом есть некоторые проблемы: когда кто-то, отправляющий идентификатор больше 5, может выдать ошибку при поиске или вызвать дублирование, идеальным было для них отправить в строковом формате. Более того, пока идентификатор находится между 5 символами, это решение будет работать.

Справка:

https://docs.microsoft.com/pt-br/dotnet/standard/base-types/custom-numeric-format-strings

https://docs.microsoft.com/pt-br/dotnet/standard/base-types/standard-numeric-format-strings#DFormatString

1
srburton 10 Ноя 2020 в 14:59