2

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

数据库是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注释erty,但它仍然没有正确的格式显示:

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

这是否标注仍适用的DateTimeOffset对象?如何修复字符串格式?

回答

3

在这里找到答案:https://stackoverflow.com/a/6140014/211747

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

+0

谢谢!这就是诀窍! –