我正在创建一个预订应用程序。我需要在一段时间内检查免费点。每个预订都有一个ArrivalDate和一个LeaveDate,而spotId是这个表中的外键。
当我创建预订时,例如从2015年1月1日到2015年3月20日, 一段时间必须有可能预留这个地方!因此,根据用户在日历中填写的内容,它应该在用户选择的时间段内检查免费地点。
我该怎么做?我收到了一个查询,但它不起作用:
代码: RegisterController
public ActionResult ShowAvailableSpots(DateTime ArrivalDate, DateTime LeaveDate)
{
var query = _campingspotrepository.SelectAvailableSpots(ArrivalDate, LeaveDate);
ViewBag.CampingSpotId = new SelectList(query, "CampingSpotId", "SpotName");
return View();
}
我的存储库SelectAvailableSpots:
public IQueryable SelectAvailableSpots(DateTime ArrivalDate, DateTime LeaveDate)
{
var query2 = db.Spots.Where(c => !db.Reservations.Any(r => DbFunctions.TruncateTime(r.ArrivalDate) >= DbFunctions.TruncateTime(ArrivalDate)
&& DbFunctions.TruncateTime(r.LeaveDate) <= DbFunctions.TruncateTime(LeaveDate)));
return query2;
}
我的观点:
@Html.DropDownList("CampingSpotId", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.CampingSpotId, "", new { @class = "text-danger" })
我的预订表
我的CampingSpot表