Kendo DateTimePicker未将更改的值传递给Controller ASP MVC

时间:2018-06-13 14:43:34

标签: asp.net-mvc kendo-ui

我有一个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传递给视图的原始值。

还有其他几个类似的问题,但没有一个解决方案有效。

1 个答案:

答案 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中纠正两者之后我仍然没有得到结果,所以我最终没有使用它。