如何在 Html.TextBoxFor 中格式化 DateTimeOffset?

Posted

技术标签:

【中文标题】如何在 Html.TextBoxFor 中格式化 DateTimeOffset?【英文标题】:How to format DateTimeOffset in Html.TextBoxFor? 【发布时间】:2014-02-18 20:48:02 【问题描述】:

我有一个基于 Bootstrap 3 和 ASP.NET MVC 5 构建的视图,用于编辑用户配置文件信息,但它在表单上以不正确的格式显示。

数据库是 Neo4j,我使用 Neo4jClient 从 .NET 与数据库进行交互。 Neo4jClient 需要使用 DateTimeOffset 对象而不是 DateTime 对象来使用 Json.NET 的序列化程序来传递给 Neo4j 的 REST 接口。因此,我的模型使用 DateTimeOffset 对象来存储用户的生日。

这是我认为的表单域:

<div class="form-group">
    <label class="col-md-4 control-label" for="Birthday">Birthday</label>
    <div class="col-md-4">
        @html.TextBoxFor(model => model.Birthday, new  @class = "form-control input-md datepicker", placeholder = "Birthday" )
        <span class="help-block">Please enter your birthday</span>
    </div>
</div>

日期打印到表单时的格式如下:

M/dd/yyyy hh:mm:ss t -zzz

但是,它应该具有这种格式,因为我们只需要日期部分:

MM/dd/yyyy

我已经尝试在模型属性上使用 DataFormatString 注释,但它仍然没有以正确的格式显示:

[DisplayFormat(DataFormatString = "0:MM/dd/yyyy", ApplyFormatInEditMode = true)]
public DateTimeOffset Birthday  get; set; 

此注释是否仍适用于 DateTimeOffset 对象?如何修复字符串格式?

【问题讨论】:

【参考方案1】:

在这里回答:https://***.com/a/6140014/211747

总结:TextBoxFor不尊重DataFormatString,你需要使用EditorFor,但是不支持自定义HTML属性,所以你需要一个编辑器模板(Views\Shared\EditorTemplates\DateTimeOffset.cshtml)。

【讨论】:

以上是关于如何在 Html.TextBoxFor 中格式化 DateTimeOffset?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用输入类型 = 日期的 Html.TextBoxFor? [复制]

Model中时间格式化

使用 jQuery datepicker 从 ASP MVC @Html.TextBoxFor 控件中删除时间

c# razor mvc textboxfor in foreach 循环

MVC 和 Razor 中 Html.TextboxFor 和 Html.EditorFor 的区别

Html5 data-* with asp.net mvc TextboxFor html属性