3

如果我在 MVC 中使用 EditFor,我的 DateTime 字段会显示未格式化的日期时间,如果我使用旧式 html,我的字段不会收到错误类。

<div class="editor-field">
     <input type="text" name="EstimateTime" id="EstimateTime" value="<%: (Model != null) ? Model.EstimateTime.ToString("dd/MM/yyyy hh:mm:ss tt") : "" %>" />
     <%: Html.TextBoxFor(model => model.EstimateTime, new { @value = (Model != null) ? Model.EstimateTime.ToString("dd/MM/yyyy hh:mm:ss tt") : "" })%>
     <%: Html.ValidationMessageFor(model => model.EstimateTime) %>
</div>

结果 HTML:查看值之间的差异:

<div class="editor-field">
    <input type="text" name="EstimateTime" id="EstimateTime" value="31/10/2013 01:54:42 PM" class="hasDatepicker">
    <input  id="EstimateTime" name="EstimateTime" type="text" value="10/31/2013 1:54:42 PM" class="input-validation-error text-box single-line">
    <span class="field-validation-error">Isn't a date/time valid</span>
</div>

修复它的最佳做法是什么?

4

3 回答 3

4
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
[DataType(DataType.Date)]
public System.DateTime EstimateTime { get; set; }

这在最新版本的 Chrome 中对我有用

于 2014-03-27T13:40:55.500 回答
2

添加DataFormatString到模型中的属性。

public class YourModel
{
   [DisplayName("Estimate Time:"), 
    DisplayFormat(DataFormatString = "{0:dd/MM/yyyy hh:mm:ss tt}")]
   public System.DateTime EstimateTime { get; set; }
   ...
}
于 2013-11-01T14:07:10.687 回答
0

我总是使用编辑器模板来完善输出控制

这是 DateTime.cshtml:

@model System.DateTime?

@{
    IDictionary<string, object> Attributes = new Dictionary<string, object>();
    if (ViewData.ContainsKey("style")) {
        Attributes.Add("style", (string)ViewData["style"]);
    }
    if (ViewData.ContainsKey("autohelp")) {
        Attributes.Add("title", (string)ViewData["autohelp"]);
    }
    if (ViewData.ContainsKey("autofocus")) {
        Attributes.Add("autofocus", (string)ViewData["autofocus"]);
    }
    Attributes.Add("class", "fecha");
    Attributes.Add("autocomplete", "off");
}


@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), Attributes)
于 2013-11-01T14:09:28.963 回答