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

C# 如何检查POST请求中的浮点值是否为空,c#,asp.net-mvc,post,http-post,C#,Asp.net Mvc,Post,Http Post,我想知道当我发送一个浮点值时,我应该如何检查POST请求是否发送数据,我尝试对POST请求中给出的所有值使用if语句,但我不能对浮点值使用if语句,因为它不能为null。这是我的发帖要求。对大多数人来说,它可能看起来很难看,但我不熟悉ASP.NET MVC [HttpPut("Product/Edit/{productid}")] public IActionResult ProductEdit(string token, int productid, [FromBody]Product

我想知道当我发送一个浮点值时,我应该如何检查POST请求是否发送数据,我尝试对POST请求中给出的所有值使用if语句,但我不能对浮点值使用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();

    }
价格是浮动的,股票是整数,所以我试着用if语句来做,就像我对其他语句做的一样,但由于上面提到的原因,它不能做。我试过在这段文字下面剪下这段代码,但当我这样做并发送一个POST请求时,我的DB将更新为一个空的价格和库存值

if(p.Price.ToString() != null)
            {
            edit.Price = p.Price;
            } else {
                edit.Price = edit.Price;
            }
所有这些的if语句都会检查post请求发送的值是否为空,否则将保留数据库中的原始值


任何帮助或建议都将不胜感激,我很高兴看到我是一名学生,所以任何评论都可以。

正如您提到的,价格是浮动类型,因此默认情况下,如果您第一次不保存任何值,它将为0.0f,所以只需与价格>0进行比较即可

像这样更改代码

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

正如Taskin提到的,price是float类型,因此默认情况下它将为0。 所以,试着像下面这样设定你的价格

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

你可以这样做

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

你真的需要其他部分代码吗?属性值已存在。也可以考虑使用模型验证来验证。@ SyJu:是的,我需要其他的,否则,如果我不把一个值传递给那个属性,它会发送一个空字符串,例如,如果我做一个POST请求,我只想更新描述,我也不想更新股票和价格。if语句使得当我在POST请求中不传递其他值时,情况并非如此。但实际上我还没有测试过,所以我打算不用其他工具也试一下,但这仍然不能解决我的问题。另外,我已经在使用验证。如果是折扣和负价格呢?@Jeremythonpson我认为价格输入不会是负的。如果有任何折扣字段,但没有任何折扣字段的迹象,则应从服务器端对其进行调整。在现实生活中,您不会将价格金额保存为负值。我们不会为该项目提供折扣,但如果我们这样做,我们会采取不同的做法,然后将折扣价格保存在控制器中,但是谢谢你的建议。@TaskinKhaleque如果你不认为使用负美元和单位价格,你就没有在金融业工作过。事实上,许多会计制度依赖于美元负值。资产负债表。