MVC 3 Razor和表单中的空日期显示

Pet*_*ith 0 razor asp.net-mvc-3

我有一个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>
Run Code Online (Sandbox Code Playgroud)

出生日期在rrsfWoman类中定义为

public DateTime WomansDateOfBirth { get; set; }
Run Code Online (Sandbox Code Playgroud)

我的问题是,因为出生日期字段默认值为MinDate.有没有办法可以将日期的显示压缩为1/01/0001 而不使字段可以为空.

谢谢

Dar*_*rov 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)
}
Run Code Online (Sandbox Code Playgroud)