【问题标题】:ASP.Net Core MVC date input valueASP.Net Core MVC 日期输入值
【发布时间】:2018-06-26 10:58:46
【问题描述】:

我为 EF 模型创建了一个编辑视图,但日期选择器有问题。 每当我尝试编辑“数据集”时,编辑视图都不会显示旧日期值。

这是我的 Edit.cshtml 代码:

<div class="form-group">
    <label asp-for="BestellungsDatum" class="control-label"></label>
    <input asp-for="BestellungsDatum" type="date" class="form- control" value="@Model.BestellungsDatum" /> 
    <span asp-validation-for="BestellungsDatum" class="text-danger"></span>
</div>

这就是它的样子,但是这个位置必须有旧值:

当我将输入更改为 type="text" 时,会显示该值但没有 datepicker.. 对此有什么解决方案吗?

【问题讨论】:

  • 您正在生成浏览器 HTML-5 日期选择器(并非所有浏览器都支持),这意味着您必须使用 ISO 格式 - 请参阅 this answer

标签: entity-framework date input asp.net-core-mvc


【解决方案1】:

type="date" 生成浏览器 HTML-5 日期选择器(如果支持)。规范要求将值格式化为 ISO 格式 (yyyy-MM-dd),然后根据浏览器文化显示。

添加asp-format 以格式化值,并删除value 属性(标签助手正确生成value 属性以进行正确的2 向模型绑定,您永远不应尝试自己添加)

<input asp-for="BestellungsDatum" type="date" asp-format="{0:yyyy-MM-dd}" class="form-control" /> 

请注意,IE 不支持 HTML-5 日期选择器,仅在最新版本的 FireFox 中支持。如果您想要一致的 UI,请考虑使用 jQuery 日期选择器。

【讨论】:

  • 感谢您的快速答复!这对我很有帮助。
【解决方案2】:

就像在接受的答案中添加一个补充:

<input asp-for="BestellungsDatum" type="date" class="form-control" />

不要将asp-format 添加到视图中,而是将DataFormatString 添加到数据模型或视图模型中,这样您就不必将其添加到使用它的每个视图中:

[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public DateTime BestellungsDatum { get; set; }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    相关资源
    最近更新 更多