代码之家  ›  专栏  ›  技术社区  ›  Mike Wills

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

  •  3
  • Mike Wills  · 技术社区  · 14 年前

    我已经看完了 Scott Hanselman's post 关于这个话题。我发现 another article 这似乎是一个简单的方法。第二个我决定试试。

    但是,创建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>
    

    我遇到的问题是我得到的行为和作者解释的不一样。这是我的结果截图。

    Screenshot showing full DateTime in first field and all zeros in the second

    我一定漏掉了什么,但我不知道。这篇文章我读了好几遍了,看不出我缺了什么。我想应该有什么东西可以告诉我们新的EditorTemplates,但是我不知道怎么做。

    2 回复  |  直到 14 年前
        1
  •  8
  •   Justin Niessner    14 年前

    你错过了斯科特的解决方案和你链接到的解决方案都没有做到的事实:

    <%= Html.TextBoxFor(model => model.LeaveRequest.DateOfLeave.Date) %>
    

    相反,他们使用:

    <%= Html.EditorFor(model => model.LeaveRequest.DateOfLeave.Date) %>
    

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

    向下滚动到 分隔日期/时间字段 您链接到的文章的标题,并阅读了一点有关自定义编辑器模板的内容。

        2
  •  1
  •   Justin Soliz    14 年前

    如果愿意,还可以在客户端添加默认值。

    <%= Html.TextBoxFor(model => model.LeaveRequest.DateOfLeave.Date,
    new { @Value= DateTime.Now })%> 
    

    这会将初始Texbox值设置为当前 DateTime 但显然你可以随心所欲。