В настоящее время я работаю над веб-сайтом бронирования отелей в виде бритвенных страниц, и я ищу способ иметь средство выбора даты, в котором даты до сегодняшней даты отключены. Прямо сейчас есть средство выбора дат, где я могу выбрать даты и сохранить их в базе данных, но я не хочу, чтобы пользователь мог выбирать даты раньше сегодняшней, потому что это не имеет смысла для сайта бронирования отелей.
Я видел много способов сделать это с помощью jquery, но не могу понять, как это сделать в моем случае. Потому что, если я реализую jquery datepicker, он сохраняет вводимые пользователем данные как объект, и я не могу заставить его работать с моим кодом.
Модель бронирования:
Тогда у меня есть свойство привязки Booking в файле cs;
[BindProperty]
public Booking CurrentBooking { get; set; }
И основная часть файла cs html выглядит так;
<form method="post">
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<label asp-for="CurrentUser.UserName"></label>
<input asp-for="CurrentUser.UserName" class="form-control" disabled />
<span asp-validation-for="CurrentUser.UserName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="CurrentBooking.Name"></label>
<input asp-for="CurrentBooking.Name" class="form-control" />
<span asp-validation-for="CurrentBooking.Name" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="CurrentBooking.LastName"></label>
<input asp-for="CurrentBooking.LastName" class="form-control" />
<span asp-validation-for="CurrentBooking.LastName" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="CurrentBooking.CheckIn">Check In</label>
<input id="checkin" asp-for="CurrentBooking.CheckIn" class="form-control" />
<span asp-validation-for="CurrentBooking.CheckIn" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="CurrentBooking.CheckOut">Check Out</label>
<input id="checkout" asp-for="CurrentBooking.CheckOut" class="form-control" />
<span asp-validation-for="CurrentBooking.CheckOut" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="CurrentBooking.numOfBookedRooms">Number Of Rooms</label>
<input id="numroom" onchange="updateDue()" asp-for="CurrentBooking.numOfBookedRooms" class="form-control" max="10" min="1" />
<span asp-validation-for="CurrentBooking.numOfBookedRooms" class="text-danger"></span>
</div>
<div>Price per room</div>
<div id="price">@Model.CurrentHotel.RoomPrice<br /></div>
<div>
<label for="exampleInputText">Total price</label>
<input type="text" name="remainingval" class="form-control" disabled id="remainingval">
</div>
<div>
<label for="exampleInputText">Total days</label>
<p id="datum"></p>
</div>
<button asp-route="@Model.CurrentHotel.Id" type="submit" class="btn btn-primary">Confirm</button>
</form>
А вот метод OnPost в файле cs;
public async Task<IActionResult> OnPostAsync(string id)
{
if (!ModelState.IsValid)
{
return NotFound();
}
var user = await _userManager.GetUserAsync(User);
CurrentHotel = await _context.Hotel.Where(h => h.Id == id).FirstOrDefaultAsync();
if (user == null)
{
return NotFound($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
}
var book = new Booking()
{
ID = new Guid(),
numOfBookedRooms = CurrentBooking.numOfBookedRooms,
Customer = user,
HotelID = CurrentHotel.Id,
Name = CurrentBooking.Name,
LastName = CurrentBooking.LastName,
CheckIn = CurrentBooking.CheckIn,
CheckOut = CurrentBooking.CheckOut
};
user.MyBookings.Add(book);
await _context.Booking.AddAsync(book);
await _context.SaveChangesAsync();
return RedirectToPage("Account/Manage/MyBookings", StatusMessage = "Booking has been added");
}
Об этих датпикерах так много разной информации, что я не могу понять, как правильно реализовать его в моем проект. Пожалуйста, дайте мне знать, если что-то требует дополнительных объяснений!