【发布时间】:2018-12-25 03:46:48
【问题描述】:
我想知道当我发送浮点值时我应该如何检查 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 语句检查通过 post 请求发送的值是否为空,否则将保留数据库中的原始值。
任何帮助或建议将不胜感激,我很高兴了解我是一名学生,所以任何评论都可以。
【问题讨论】:
-
您真的需要
else零件代码吗?属性值已经存在。还可以考虑使用为您进行验证的 ModelValidation。 -
@Shyju 是的,我需要 else,否则如果我不向该属性传递值,它将发送一个空字符串,例如,如果我发出一个我只想更新描述的发布请求我也不想更新库存和价格。并且 if 语句使得当我没有在 POST 请求中传递其他值时情况并非如此。但我实际上还没有测试过,所以我会在没有 else 的情况下尝试它,但这仍然不能解决我的问题。我也已经在使用验证了。
标签: c# asp.net-mvc post http-post