我有一个Kendo DateTimePicker没有将更改后的值传递给Controller。我只是得到了原始的绑定值。
以下是查看代码:
@for (var i = 0; i < Model.Call.CallTimeSheets.Count(); i++ )
{
<tr>
<td>@(Html.Kendo().DateTimePickerFor(model => Model.Call.CallTimeSheets[i].StartTime)
.Name("Start" + i.ToString())
.Format("dd-MM-yyyy HH:mm")
</td>
<td>@(Html.Kendo().DateTimePickerFor(model => Model.Call.CallTimeSheets[i].StopTime)
.Name("Stop" + i.ToString())
.Format("dd-MM-yyyy HH:mm")
</td>
</tr>
}
这是ViewModel:
public class CallEditViewModel
{
public Call Call { get; set; }
public IEnumerable<SelectListItem> Employees { get; set; }
public IEnumerable<SelectListItem> ClientCallers { get; set; }
public IList<CallTimeSheet> TimeSheet { get; set; }
}
这是模特:
[Table("CallTimeSheet")]
public class CallTimeSheet
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid ID { get; set; }
public Guid CallID { get; set; }
[ForeignKey("CallID")]
public virtual Call Call { get; set; }
public Guid? EmployeeID { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MMMMM-dd}")]
[Display(Name = "Start Time")]
public DateTime? StartTime { get; set; }
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MMMMM-dd}")]
[Display(Name = "Start End")]
public DateTime? StopTime { get; set; }
[Timestamp]
public byte[] RowVersion { get; set; }
public TimeSpan? CallDuration()
{
return StopTime - StartTime;
}
}
当表单提交时,我没有错误,但是发布到控制器的开始和停止时间的值都是从控制器GET传递给视图的原始值。
还有其他几个类似的问题,但没有一个解决方案有效。
答案 0 :(得分:0)
我没有找到问题的解决方案,但为了解决我的问题,我改为使用简单的“TextBoxFor”代替Kendo“DateTimePickerFor”。
我改变了我的代码来改为使用它:
<td>@Html.TextBoxFor(model => Model.Call.CallTimeSheets[i].StartTime, "{0:yyyy-MM-dd
hh:mm:ss tt}")</td>
其中:
<td>@(Html.Kendo().DateTimePickerFor(model => Model.Call.CallTimeSheets[i].StartTime)
.Name("Start" + i.ToString())
.Format("dd-MM-yyyy HH:mm")</td>
我的部分问题是名称错误构建和日期格式,但即使在DateTimePickerFor中纠正两者之后我仍然没有得到结果,所以我最终没有使用它。