在ASP.NET MVC中将日期时间拆分为日期和时间

Mik*_*lls 3 asp.net-mvc datetime mvc-editor-templates

我已经阅读了Scott Hanselman关于这个主题的帖子.我发现另一篇文章似乎是一种更简单的方法.第二个我决定尝试.

但是,创建EditorTemplates的第一部分对我不起作用.我复制了DateTime.ascx和TimeSpan.ascx让作者写了它们.然后我在视图中拆分字段.

    <div class="editor-label">
        <%= Html.LabelFor(model => model.LeaveRequest.DateOfLeave)%>
    </div>
    <div class="editor-field">
        <div class="date-container">
            <%= Html.TextBoxFor(model => model.LeaveRequest.DateOfLeave.Date)%>
        </div>
        <div class="time-container">
            <%= Html.TextBoxFor(model => model.LeaveRequest.DateOfLeave.TimeOfDay)%>
        </div>
        <div class="clear">
            <%= Html.ValidationMessageFor(model => model.LeaveRequest.DateOfLeave)%>
        </div>
    </div>
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,我得到的行为与作者解释为应该发生的行为不同.这是我的结果的屏幕截图.

屏幕截图显示第一个字段中的完整DateTime和第二个字段中的全部零

我必须遗漏一些东西,但我不知道是什么.我已多次阅读这篇文章,看不出我错过了什么.我猜测需要有一些东西告诉程序给我们新的EditorTemplates,但我不知道如何.

Jus*_*ner 8

您错过了Scott的解决方案和您链接的解决方案都没有这样做的事实:

<%= Html.TextBoxFor(model => model.LeaveRequest.DateOfLeave.Date) %>
Run Code Online (Sandbox Code Playgroud)

相反,他们使用:

<%= Html.EditorFor(model => model.LeaveRequest.DateOfLeave.Date) %>
Run Code Online (Sandbox Code Playgroud)

然后使用自定义编辑器将字段限制为日期(而不是日期和时间).

向下滚动到您链接到的文章的单独日期/时间字段标题,并仔细阅读有关自定义编辑器模板的内容.