【发布时间】:2020-04-03 23:10:26
【问题描述】:
我遇到的问题是我无法通过查询来检查数据库中的相同属性中是否已经存在相同的文本。 下面是控制器的部分。此查询包含 if 语句。
[AllowAnonymous]
[HttpPost]
public async Task<IActionResult> PostBook(Booking bookings, string Title)
{
if(!ModelState.IsValid)
{
var SearchData = await _context.bookings.Where(x => x.Title == Title).SingleOrDefaultAsync();
if (SearchData != null)
return BadRequest("bad request");
}
_context.bookings.Add(bookings);
_context.SaveChanges();
return Ok();
}
每当我输入相同的数据时,它就会出现 200 个请求或 500 个内部错误。预期结果应该是 400 错误请求。当我从邮递员发出 400 错误请求时,应该会出现一个 Post 请求。这类似于检查用户名是否已经存在。我要实现的是一个不允许用户具有相同姓名或时间的餐厅预订系统?您如何使用基于小时的会话和字符串来为 Time 执行此操作? 我想知道你们中是否有人在检查数据库中是否存在相同的值或文本之前已经这样做了。
我正在使用带有 vs 代码和 Postman 的 .net 核心来发布 JSON 数据。
以下是我的预订模型。
public class Booking
{
public int Id { get; set; }
public string Title { get; set; }
public DateTime Date { get; set; }
public string Request { get; set; }
public int NoPeople { get; set; }
public Customer Customer { get; set;}
}
【问题讨论】:
-
当模型状态无效时,您是否只搜索现有预订?如果您发布有效数据,该代码将永远不会受到影响,这可以解释为什么您从未看到 400 Bad Request