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

时间:2014-02-18 20:48:03

标签: c# twitter-bootstrap-3 data-annotations asp.net-mvc-5 neo4jclient

我有一个基于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 个答案:

答案 0 :(得分:4)

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

摘要:TextBoxFor不尊重DataFormatString,您需要使用EditorFor,但这不支持自定义HTML属性,因此您需要一个编辑器模板({{1 }})。