Датапикер страниц Razor | Отключите даты до сегодняшней даты и сохраните опубликованную дату в базе данных - PullRequest
0 голосов
/ 06 мая 2020

В настоящее время я работаю над веб-сайтом бронирования отелей в виде бритвенных страниц, и я ищу способ иметь средство выбора даты, в котором даты до сегодняшней даты отключены. Прямо сейчас есть средство выбора дат, где я могу выбрать даты и сохранить их в базе данных, но я не хочу, чтобы пользователь мог выбирать даты раньше сегодняшней, потому что это не имеет смысла для сайта бронирования отелей.

Я видел много способов сделать это с помощью jquery, но не могу понять, как это сделать в моем случае. Потому что, если я реализую jquery datepicker, он сохраняет вводимые пользователем данные как объект, и я не могу заставить его работать с моим кодом.

Модель бронирования:

Model of a Booking

Тогда у меня есть свойство привязки 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");
}

Об этих датпикерах так много разной информации, что я не могу понять, как правильно реализовать его в моем проект. Пожалуйста, дайте мне знать, если что-то требует дополнительных объяснений!

...