ViewModel:
public class HistoryViewModel
{
[DisplayFormat(DataFormatString = "{0:dd.MM.yyyy}", ApplyFormatInEditMode = true)]
public DateTime? OperationDate { get; set; }
}
控制器:
[HttpGet]
public ActionResult Index()
{
var viewModel = new HistoryViewModel()
{
OperationDate = DateTime.Now
};
return View(viewModel);
}
[HttpPost]
public ActionResult Index(HistoryViewModel vm)
{
return RedirectToAction("Index");
}
查看:
@model CBH.ViewModels.HistoryViewModel
@using (Html.BeginForm("Index", "BankHistories", FormMethod.Post, new { id = "SearchForm" }))
{
@Html.EditorFor(model => model.OperationDate, new { htmlAttributes = new { @Class = "input-small"} })
<input type="submit" value="search" class="btn btn-default" />
}
现在,在提交表单vm.OperationDate
之后将其设置为null
。其他属性已正确绑定,但是DateTime
似乎失败。
DataType
添加到我的ViewModel EditorFor
没有一个有效。如果我打印所有System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.GetAllDateTimePatterns()
,我将得到:
dd.MM.yyyy
d MMM yyyy
dddd, d MMMM yyyy
d MMMM yyyy
dddd, d MMMM yyyy HH:mm
d MMMM yyyy HH:mm
dddd, d MMMM yyyy HH:mm:ss
d MMMM yyyy HH:mm:ss
dd.MM.yyyy HH:mm
d MMM yyyy HH:mm
dd.MM.yyyy HH:mm:ss
d MMM yyyy HH:mm:ss
d MMMM
d MMMM
yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK
yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK
ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
yyyy'-'MM'-'dd'T'HH':'mm':'ss
HH:mm
HH:mm:ss
yyyy'-'MM'-'dd HH':'mm':'ss'Z'
dddd, d MMMM yyyy HH:mm:ss
d MMMM yyyy HH:mm:ss
MMMM yyyy
MMMM yyyy