将KendoUI DatePicker值传递给Controller

时间:2014-01-21 13:53:19

标签: c# asp.net-mvc kendo-ui

我有一个问题从KendoUI DatePicker传递给控制器​​

@(Html.Kendo().DatePicker()
          .Name("FromDate")
          .Max(DateTime.Today)
          .Value(DateTime.Today)
          .Events(e => e.Change("change"))
          .HtmlAttributes(new { style = "width:150px" })
        )

我希望在从报表Grid

调用read.Action事件时传递该值
@(Html.Kendo()
  .Grid<model>()
  .Name("AccountEditTraceability")
  .Columns(columns =>
  {
      //columns.bound....etc
  }
  .DataSource(dataSource => dataSource
              .Ajax()
              .Model(model =>
              {
                  model.Id(aetr => aetr.Id);
              })
              .Read(read => read.Action("DisplayResults", "AccountEditTraceability", "FromDate")))

在控制器中使用此值...

public ActionResult DisplayResults([DataSourceRequest] DataSourceRequest request, DateTime filterByDate)
{
    //Do stuff with date
    var reportResults = AccountEditTraceabilityReport.Calculate(filterByDate);
}

非常感谢对noob mvc / kendo修补匠的任何帮助。

基督教

1 个答案:

答案 0 :(得分:1)

您需要做以下事情:

.Read(read => read.Action("DisplayResults", "AccountEditTraceability").Data("ReadRequestData")))

ReadRequestData是一个javascript函数,用于准备您的请求数据,应该如下所示:

function ReadRequestData () {
    return {
        "filterByDate": $("#FromDate").data("kendoDatePicker").value()
    };
}

应该工作!但是要注意日期格式,因为格式化,从客户端到服务器发送日期可能存在很多问题。

更具体地说,我将字符串化的JSON数据发送到服务器,然后由于日期格式的反序列化整个数据,我遇到了不同类型的问题。如果您要通过互联网搜索,那么有很多关于JSON与.NET DateTime相关问题的文章。