【问题标题】:HTML5 input type date is not loading the date value from the controller in ASP.NET Core 1.1HTML5 输入类型日期未从 ASP.NET Core 1.1 中的控制器加载日期值
【发布时间】:2018-02-12 00:25:16
【问题描述】:

我正在尝试将今天的日期加载到 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"),但也不会加载日期。

【问题讨论】:

  • 您是否尝试过将workOrderIssueDate 属性设置为string 并将DateTime.Today 转换为如下字符串workOrderVm.NewWorkOrder.workOrderIssueDate = DateTime.Today.ToString("yyyy-MM-dd");
  • 我有多个日期字段,它们都是 MSSQL 数据库表中的 DateTime。如果可能的话,我想保留它们 DateTime,以便我的数据库中的所有字段都不是字符串。

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


【解决方案1】:

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

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

【讨论】:

  • 试过这个,在视觉工作室中的@data-format = "yyyy-MM-dd" 上出现错误,说“当前上下文中不存在名称'格式'。无效的匿名类型成员声明符。必须使用声明匿名类型成员成员参数、简单名称或成员访问权限。”
  • 你知道时间的格式是什么吗?它没有加载时间并且有类似的错误“指定值“14:29:45.9712712”不符合要求的格式。格式为“HH:mm”、“HH:mm:ss”或“HH:mm:ss.SSS”,其中 HH 为 00-23,mm 为 00-59,ss 为 00-59,SSS 为 000- 999。 @Html.TextBoxFor(Model =&gt; Model.NewWorkOrder.workOrderProcessTime, new { @class = "form-control", @type = "time" })
  • 想通了,是{0:hh\\:mm}
【解决方案2】:

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

修饰了模型中的属性
[DataType(DataType.Date)]

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

[DataType(DataType.DateTime)]

一旦我将它们都更改为 DateTime,错误就消失了。我不假装明白为什么。

【讨论】:

    猜你喜欢
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 2015-07-25
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多