我想知道当我发送一个浮点值时,我应该如何检查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语句检查随邮寄请求发送的值是否为空,否则将保留数据库中的原始值。
任何帮助或建议将不胜感激,很高兴得知我是学生,所以任何评论都很好。
答案 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;
}