EditorTemplate和DateTimeOffset在MVC4中不起作用

时间:2012-07-31 18:54:42

标签: c# asp.net-mvc-4 mvc-editor-templates

我正在使用EditorTemplate来创建一个由...组成的DateTimeOffset字段。

@model DateTimeOffset?
@Html.TextBox("", String.Format("{0:u}", Model.HasValue ? Model : DateTimeOffset.UtcNow), new { @class = "datepicker" })

这在90%的表单中都有效,我得到2012-07-31 11:30:09Z之类的值。但是,我有一个表格不会应用任何格式。工作输入字段的HTML输出和非工作输入字段是相同的。

...工作

<input class="datepicker hasDatepicker" data-val="true" data-val-required="&amp;#39;Launch Time&amp;#39; must not be empty." id="LaunchTime" name="LaunchTime" type="text" value="2012-07-31 11:30:09Z">

非工作...

<input class="datepicker hasDatepicker" data-val="true" data-val-required="&amp;#39;Launch Time&amp;#39; must not be empty." id="LaunchTime" name="LaunchTime" type="text" value="07/31/2012 11:30:09 +00:00">

我发现解决问题的唯一方法是更改​​TextBox名称字段......

@Html.TextBox("asdf", String.Format("{0:u}", Model.HasValue ? Model : DateTimeOffset.UtcNow), new { @class = "datepicker" })

然而,这会将我的输入字段更改为...

<input class="datepicker hasDatepicker" id="LaunchTime_asdf" name="LaunchTime.asdf" type="text" value="2012-07-31 11:30:09Z">

然后会破坏表单提交,并删除验证规则。

模特......

[DisplayFormat(DataFormatString = "{0:u}" , ApplyFormatInEditMode = true)]
public DateTimeOffset LaunchTime { get; set; }

1 个答案:

答案 0 :(得分:0)

问题是,似乎适用于datetime值的唯一格式是yyyy-mm-dd。 / s不起作用。