0

我有一个 MVC 3 网站,我在其中使用以下表格显示日期:

<div class="editor-label control-label">
     @Html.LabelFor(m => m.rrsfWoman.DateOfBirth)
</div>
<div class="editor-field controls">
     @Html.EditorFor(m => m.rrsfWoman.DateOfBirth)
     @Html.ValidationMessageFor(m => m.rrsfWoman.DateOfBirth)
</div>

出生日期在 rrsfWoman 类中定义为

public DateTime WomansDateOfBirth { get; set; }

我的问题是,出生日期字段的默认值为 MinDate。有没有一种方法可以将日期显示为 1/01/0001而不会使该字段为空。

谢谢

4

3 回答 3

7

有没有一种方法可以将日期显示为 1/01/0001 而不会使该字段为空。

实现这一目标的正确方法是在您的视图模型中使日期为空。如果您以后不这样做,您也会遇到模型绑定问题,因为不可为空的 DateTime 字段不能绑定到空字符串,您必须编写自定义模型绑定器和其他东西才能使其工作。如果你不使用视图模型,你会让你的生活变得悲惨。

话虽如此,如果您想违背良好做法,您可以为 DateTime 类型定义一个自定义编辑器模板,该模板将执行检查并使用空值,但老实说,我不建议您这样做:

~/Views/Shared/EditorTemplates/DateTime.cshtml

@model DateTime

@if (Model == default(DateTime))
{
    @Html.TextBox("", "")
}
else
{
    @Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue)
}
于 2012-09-12T10:03:06.100 回答
0

您可以像这样显式设置 WomansDateOfBirth 的默认值:

private DateTime _womansDateOfBirth = DateTime.Now;
public DateTime WomansDateOfBirth
{
    get { return _womansDateOfBirth; }
    set { _womansDateOfBirth = value; }
}

DateTime.Now你的MinDate在哪里。

于 2012-09-12T10:06:11.427 回答
0

如果日期字段不允许空值并且您想强制用户输入日期。IMO,最好的方法是在表单构建后简单地清除输入字段。

所以在你的视图末尾添加这个小片段。

<script type='text/javascript'>
    document.getElementById("DateOfBirth").value = "";
</script>
于 2014-09-30T15:30:21.967 回答