Почему мой календарь bootstrap datepicker не обновляется при получении значения из модели? - PullRequest
1 голос
/ 26 марта 2020

Когда представление впервые открывается (используется новая пустая модель), средство выбора даты работает отлично. Когда я извлекаю значения из формы из модели, текст в поле ввода выглядит нормально, но когда календарь открывается, дата совершенно неверна. Как это можно исправить?

Контроллер

public IActionResult Daily(Daily? daily)
{
    new ReportDaily().GetAvailableSavedCriteria(out List<ReportCriteria> reportCriteria, out Notification not);

    if (daily.SelectedCriteria == null) {
        //Create daily report object and initialize the default values
        var newModel = new Daily
        {
            PaymentTypes = DGetPaymentTypes(),
            Users = DGetUsers(),
            Criteria = reportCriteria,
            StartDate = DateTime.Today.Date,
            EndDate = DateTime.Today.Date,
            County = true,
            Municipality = true
        };
        return View(newModel);
    }
    else
    {
        daily.PaymentTypes = HttpContext.Session.GetString("PaymentTypes") == null ? DGetPaymentTypes() : JsonConvert.DeserializeObject<List<Daily.PaymentType>>(HttpContext.Session.GetString("PaymentTypes"));
        daily.Users = HttpContext.Session.GetString("Users") == null ? DGetUsers() : JsonConvert.DeserializeObject<List<Daily.User>>(HttpContext.Session.GetString("Users"));
        daily.Criteria = reportCriteria;
        return View("Daily", daily);
    }
}

Просмотр

<div class="row col-12 formdatepicker">
    <input asp-for="StartDate" type="text" class="form-control" id="startdatepicker" />
    <span style="margin-left: 8px; margin-right: 8px; padding-top: 5px;">to</span>
    <input asp-for="EndDate" type="text" class="form-control" id="enddatepicker" />
</div>

JavaScript

$("#startdatepicker").datepicker();
$("#enddatepicker").datepicker();

Значение в текстовом поле изначально установлено на 03/10/2020. После щелчка в текстовом поле календарь открывается с выбранной датой, являющейся текущим днем ​​(в данном случае 25/25/2020), и при щелчке по календарю без выбора даты он все равно устанавливается. Мне бы хотелось, чтобы календарь даты bootstrap имел то же значение, что и текстовое поле. Вот GIF для иллюстрации проблемы:

Calendar error

1 Ответ

1 голос
/ 26 марта 2020

Ожидается, что Datepicker установит значение по умолчанию на сегодня. Если ваш скрипт находится на странице .cshtml, вы можете просто сделать это:

$("#startdatepicker").datepicker("setDate", new Date('@Model.StartDate'));
$("#enddatepicker").datepicker("setDate", new Date('@Model.EndDate'));

Если он находится в отдельном файле, привяжите даты к некоторым полям data- или используйте <input value="@Model.StartDate" hidden="hidden" type="text">, а затем верните их Jquery.

...