Как проверить, является ли значение с плавающей точкой пустым в запросе POST - PullRequest
0 голосов
/ 25 декабря 2018

Мне интересно, как я должен проверять, отправляет ли запрос POST данные или нет, когда я отправляю значение с плавающей запятой, я пытаюсь сделать это с помощью операторов if для всех значений, которые я даю в запросе post, но я не могу использоватьоператор if для значения с плавающей точкой, потому что он не может быть нулевым.вот мой почтовый запрос.большинству людей это может показаться очень уродливым, но я не знаком с ASP.NET MVC

[HttpPut("Product/Edit/{productid}")]
    public IActionResult ProductEdit(string token, int productid, [FromBody]Product p)
    {
        bool RoleId = JWTValidator.RoleIDTokenValidation(token);
        var edit = _context.products.Find(productid);
        if (RoleId)
        {
            if (p.Name != null)
            {
                edit.Name = p.Name;
            }
            else
            {
                edit.Name = edit.Name;
            }
            if (p.Description != null)
            {
                edit.Description = p.Description;
            }
            else
            {
                edit.Description = edit.Description;
            }
            edit.Price = p.Price;
            if (p.FirstImg != null)
            {
                edit.FirstImg = p.FirstImg;
            }
            else
            {
                edit.FirstImg = edit.FirstImg;
            }
            edit.Stock = p.Stock;

            if (ModelState.IsValid)
            {
                _context.products.Update(edit);
                _context.SaveChanges();
            }
            else
            {
                return BadRequest(ModelState);
            }

            return Ok("Product updated");
        }

        return Unauthorized();

    }

Цена - это число с плавающей точкой и акция в int, поэтому я пытаюсь сделать это с помощью оператора if, как сдругие, но это не может быть сделано из-за вышеупомянутой причины.я пробовал это (код подрезан под этим текстом), но когда я делаю это и отправляю запрос POST, моя БД обновляется с пустым значением цены и запаса.

if(p.Price.ToString() != null)
            {
            edit.Price = p.Price;
            } else {
                edit.Price = edit.Price;
            }

оператор if во всех этих проверках проверяет, является ли значение, полученное при отправке с запросом на публикацию, пустым или нет, в противном случае будет сохранено исходное значение в БД.

Любая помощьили предложения будут с благодарностью, я рад узнать, как я студент, поэтому любые замечания будут в порядке.

Ответы [ 3 ]

0 голосов
/ 25 декабря 2018

Как упоминал Таскин, цена является типом с плавающей запятой, поэтому по умолчанию она равна 0. Поэтому попробуйте установить свою цену, как показано ниже.

edit.Price = p.Price != edit.Price ? p.Price : edit.Price;
0 голосов
/ 25 декабря 2018

вы можете сделать что-то вроде этого.

  if (p.Price.Equals(null))
        {
            edit.Price = edit.Price;
        }
        else
        {
            edit.Price = p.Price;
        }
0 голосов
/ 25 декабря 2018

Поскольку вы упомянули, что цена является типом с плавающей запятой, по умолчанию это будет 0.0f (если вы не сохраняете какое-либо значение в первый раз), поэтому просто сравните с ценой> 0

и измените свой код как

if(p.Price>0)
        {
        edit.Price = p.Price;
        } else {
            edit.Price = edit.Price;
        }
...