如何检查POST请求中的浮点值是否为空

时间:2018-12-25 03:46:49

标签: c# asp.net-mvc post http-post

我想知道当我发送一个浮点值时,我应该如何检查POST请求是否发送数据,我尝试用if语句对我在post请求中给出的所有值进行处理,但是我不能使用浮点值上的if语句,因为它不能为null。这是我的职位要求。对大多数人来说,这看起来确实很丑陋,但我对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 :(得分:0)

正如Taskin所述,价格为浮点型,因此默认情况下它将为0。 因此,请尝试按以下方式设置价格。

edit.Price = p.Price != edit.Price ? p.Price : edit.Price;

答案 1 :(得分:0)

您可以做这样的事情。

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

答案 2 :(得分:-1)

您提到价格是浮点型的,因此默认情况下它将是0.0f(如果您不保存任何值到第一次),因此只需将价格与> 0进行比较

一样更改代码
if(p.Price>0)
        {
        edit.Price = p.Price;
        } else {
            edit.Price = edit.Price;
        }