为什么从模型获取值时我的引导日期选择器日历不会更新?

问题描述 投票:1回答:1

[首先拉起视图时(使用新的空模型),日期选择器非常有用。当我从模型中将值拉到表单中时,输入框中的文本看起来很好,但是当日历打开时,日期是完全错误的。如何解决?

Controller

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。在文本框中单击后,将以所选日期为当前日期(在本例中为03/25/2020)显示日历,并且从日历中单击而不选择日期时,无论如何都会对其进行设置。我希望引导日期选择器日历与文本框具有相同的值。 这里是一个GIF来说明问题:

Calendar error

javascript jquery asp.net-mvc asp.net-core
1个回答
1
投票

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取回它们。


推荐问答