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

4
我有一个使用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个回答

4

在这里得到答案:https://dev59.com/rm025IYBdhLWcg3wfmHw#6140014

简要概述: TextBoxFor 无法遵循 DataFormatString,您需要使用EditorFor,但它不支持自定义HTML属性,因此您需要使用编辑模板(Views\Shared\EditorTemplates\DateTimeOffset.cshtml)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接