我有一个日期字段的编辑模板,该模板设置了当前日期,如果该字段为null。
@model Nullable<DateTime>
@{
var date = Model as DateTime?; // local reference to a DateTime?
if (!date.HasValue // check if it is not null
|| date.Equals(default(DateTime))) // check if it is not default 01/01/0001
{
date = DateTime.Now;
}
@Html.TextBox("", String.Format("{0:d}", date.Value.ToShortDateString()), new { @class = "date" })
}
我想将此模板应用于我的创建视图。
编辑记录时,上面的代码填充了我故意离开的字段的当前日期,因为日期未知。
想知道我的代码是否可以修改以适应这个?
任何帮助将不胜感激。
有几种方法可以做到这一点。
第一种方法是通过您的ViewData传递旗帜,类似的东西:
@Html.EditorFor(m => m.SomeDate, new { nowIfNull = true })
然后更新模板:
@model Nullable<DateTime>
@{
var date = Model as DateTime?; // local reference to a DateTime?
if ((!date.HasValue // check if it is not null
|| date.Equals(default(DateTime))) // check if it is not default 01/01/0001
&& ((bool?)ViewData["nowIfNull"] ?? false)) // check if it should set to now if null
{
date = DateTime.Now;
}
@Html.TextBox("", date == null ? String.Empty : String.Format("{0:d}", date.Value.ToShortDateString()), new { @class = "date" })
}
另一种方法是在创建新模型时,将其默认为控制器中的DateTime.Now
,甚至更好,甚至更好。这将在您的控制器/映射器中而不是视图中设置默认值的关注点。