Вам необходимо отформатировать дату и время в соответствии со RFC3339 стандартом
HTML5 спецификации даты и времени ввода: http://dev.w3.org/html5/markup/input.datetime.html
Таким образом, ваше значение должно быть отформатировано примерно так:
<input ... type="datetime" value="2012-03-30T10:00:00" ... />
Чтобы форматировать дату как RFC3339, вы можете позвонить:
DateTime.ToString("yyyy-MM-ddThh:mm:ssZ");
Это можно сделать, добавив атрибут DisplayFormatAttribute к вам Article.PublishedDate:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-ddThh:mm:ssZ}")]
public DateTime PublishedDate { get; set; }
Проблема сейчас (по крайней мере для меня) в том, что свойство теперь всегда остается таким же.Вы можете использовать шаблон EditorFor для этого:
@model DateTime?
@{
var attributes = new Dictionary<string, object>();
attributes.Add("type", "datetime");
attributes.Add("class", "text-box single-line");
//since this is a constraint, IsRequired and other constraints
//won't necessarily apply in the browser, but in case script
//turns off readonly we want the constraints passed
if (ViewData.ModelMetadata.IsReadOnly)
{
attributes.Add("readonly", "readonly");
}
if (ViewData.ModelMetadata.IsRequired)
{
attributes.Add("required", "required");
}
}
@Html.TextBox("", Model.HasValue ? Model.Value.ToUniversalTime().ToString("yyyy-MM-ddThh:mm:ssZ") : String.Empty, attributes)
На основе DateTime.cshtml
И для локальных дат:
@model DateTime?
@{
var attributes = new Dictionary<string, object>();
attributes.Add("type", "datetime-local");
attributes.Add("class", "text-box single-line");
if (ViewData.ModelMetadata.IsRequired)
{
attributes.Add("required", "required");
}
}
@Html.TextBox("", Model.HasValue ? Model.Value.ToLocalTime().ToString("yyyy-MM-ddTHH:mm:ss") : String.Empty, attributes)
На основе DateTime-Local.cshtml