Json целое число превращает строку при публикации данных. Net Core + React - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь добавить объекты Car в свою базу данных, он отлично работает только со строками, но когда я пытаюсь добавить целочисленное значение, значение цитируется в Json и превращается в строку. Вот моя. Net Модель ядра:

public class Car : Service
    {
        public string Description { get; set; }
        public int Price { get; set; }
        public string Options { get; set; }
    }

Вот мой обработчик создания

 public async Task<Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var car = new Car
                {
                    id = request.id,
                    Name = request.Name,
                    Description = request.Description,
                    Price = request.Price,
                    Options = request.Options
                };

                _context.Cars.Add(car);
                var success= await _context.SaveChangesAsync() > 0;

                if(success) return Unit.Value;

                throw new System.Exception("Problem saving changes");
            }

Снова обработчик создания отлично работает со строками, но когда я пытаюсь отправить целочисленное значение, вот отправленное Json

{id: "f8aa6881-8a90-4510-9505-5471c1f9a656", name: "Mercedes AMG", description: "a", price: "800",…}
description: "a"
id: "f8aa6881-8a90-4510-9505-5471c1f9a656"
name: "Mercedes AMG"
options: "a"
price: "800" //This is the value creating the problem
price:{}; The JSON value could not be converted to System.Int32

Пожалуйста, как я могу убедиться, что значение передается как целое число? я ценю помощь.

1 Ответ

0 голосов
/ 03 июня 2020

Сегодня я столкнулся с этой проблемой!

Вы можете использовать valueAsNumber, чтобы получить значение как двойное

double: Возвращает значение элемента, интерпретируемое как одно из следующих, в следующем порядке:

  • Временное значение
  • Число
  • NaN если преобразование невозможно

источник - MSN Web Docs

Если вы используете базовую функцию типа c onChange для обработки ввод, вы можете изменить его на что-то вроде (где, если это не число, он назначит его как строку, как обычно):

    onChange = e => this.setState({ [e.target.name]: e.target.valueAsNumber || e.target.value })

или, если вам нужен немного более ограниченный контроль над вашим преобразования, вы можете сделать что-то подобное тому, что @ bennygenel предложил в его ответ :

this.setState({
  [e.target.name]: e.target.type === 'number' ? parseInt(e.target.value) : e.target.value
});

// or

this.setState({
  [e.target.name]: e.target.name === 'price' ? parseFloat(e.target.value) : e.target.value
});

Надеюсь, это поможет!

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