HTML5输入类型日期未从ASP.NET Core 1.1中的控制器加载日期值

时间:2017-09-03 16:38:21

标签: c# asp.net asp.net-mvc html5 razor

我正在尝试将今天的日期加载到Core 1.1中的HTML5日期输入类型,但是当我在控制器中设置今天的日期时,我在页面的控制台中收到以下错误。

  

指定值“9/3/2017 12:00:00 AM”不符合所需格式“yyyy-MM-dd”。

AddWorkOrder.cshtml

<div class="form-group">
    <b>Issue Date:</b>
    @Html.TextBoxFor(Model => Model.NewWorkOrder.workOrderIssueDate, new { @class = "form-control", @type = "date", @value = Model.NewWorkOrder.workOrderIssueDate.ToString("yyyy-MM-dd") })
    @Html.ValidationMessageFor(Model => Model.NewWorkOrder.workOrderIssueDate, "", new { @class = "valColor" })
</div>

WorkOrderController.cs

// GET : /WorkOrder/AddWorkOrder
public IActionResult AddWorkOrder()
{
    WorkOrderViewModel workOrderVm = new WorkOrderViewModel();
    using (var db = new WorkOrderDBContext())
    {
        workOrderVm.NewWorkOrder = new WorkOrder();
        workOrderVm.NewWorkOrder.workOrderIssueDate = DateTime.Today;
    }
    return View(workOrderVm);
}

我已尝试将教科书的值设置为@value = DateTime.Today.ToString("yyyy-MM-dd"),并且不会加载日期。

2 个答案:

答案 0 :(得分:2)

您可以使用这样的数据格式属性来发布正确的格式日期:

@Html.TextBoxFor(Model => Model.NewWorkOrder.workOrderIssueDate, "{0:yyyy-MM-dd}", new { @class = "form-control", @type = "date" })

答案 1 :(得分:0)

我遇到了一个非常类似的问题,但我有一个线索,因为我在输入表单上有两个日期,一个正在工作而另一个没有。我很困惑,因为HTML和Razor标记完全一样。然后我注意到,对于没有按预期工作的日期,我在模型中用

修饰了属性
[DataType(DataType.Date)]

但是对于正常工作的值,我将其装饰为

[DataType(DataType.DateTime)]

一旦我将它们都改为DateTime,错误便消失了。我不假装理解为什么。