带有EditorTemplate TimeSpan的Kendo Grid

时间:2014-02-24 20:12:42

标签: model-view-controller kendo-ui timepicker

我有一个Kendo Grid,它有一个带有timepicker的EditorTemplate。时间戳工作得很好,时间显示在网格上很好,但是当我尝试保存时,错误的是说对象的值不正确。以下是我的代码。当我点击保存时,它告诉错误说“价值'2/24/2014 07:00:00 AM'对于Brief无效。时间是我从时间选择器中选择的时间。我如何只发送时间而不用日期,或者将时间仅保存到数据库的最佳选项是什么?

ViewModel(部分):

[UIHint("_TimePicker")]
public TimeSpan? Brief { get; set; }

[UIHint("_TimePicker")]
public TimeSpan? KickOff { get; set; }

[UIHint("_TimePicker")]
public TimeSpan? Debrief { get; set; }

网格:

 @(Html.Kendo().Grid<Optic_Freedom.Areas.Scheduling.Models.ExerciseBreakdownViewModel>()
        .Name(string.Format("Grid"))
        .Columns(columns =>
        {
            columns.Bound(p => p.Personnel.Name).Width(100);
            columns.Bound(p => p.NumberOfTeams).Width(80);
            columns.Bound(p => p.TeamMembers).Width(100);
            columns.Bound(p => p.Vehicles).Width(100);
            columns.Bound(p => p.Brief).Format("{0:HH:mm}").EditorTemplateName("_TimePicker1").Width(100);
            columns.Bound(p => p.KickOff).Format("{0:HH:mm}").EditorTemplateName("_TimePicker2").Width(100);
            columns.Bound(p => p.Debrief).Format("{0:HH:mm}").EditorTemplateName("_TimePicker3").Width(100);
        })

EditorTemplate:

@using Kendo.Mvc.UI
@model TimeSpan?

@(Html.Kendo().TimePickerFor(m=>m)
      .Value(@Model.GetValueOrDefault())
      .Min("06:00")
      .Max("22:00")
      .Format("{0:HH:mm}"))

1 个答案:

答案 0 :(得分:1)

看起来你需要将它存储在DateTime结构中并解析它的时间。 TimeSpan用于存储一段时间(例如35分钟),而不是特定时间(美国东部时间11:30)。 Jon Skeet在a related answer中讨论了他的Noda Time库,这可能有所帮助。