3

我已经阅读了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>

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

屏幕截图显示第一个字段中的完整日期时间和第二个字段中的全零

我一定错过了什么,但我不知道是什么。我已经多次阅读这篇文章,但看不出我错过了什么。我猜需要有一些东西可以告诉我们新的 EditorTemplates 程序,但我不知道如何。

4

2 回答 2

8

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

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

相反,他们使用:

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

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

向下滚动到您链接到的文章的分离日期/时间字段标题,并仔细阅读有关自定义编辑器模板的信息。

于 2010-11-15T16:12:27.097 回答
1

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

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

这会将初始 Texbox 值设置为当前值,DateTime但您显然可以将其设置为您喜欢的任何值。

于 2010-11-15T16:20:24.673 回答