我有一个问题从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修补匠的任何帮助。
基督教
答案 0 :(得分:1)
您需要做以下事情:
.Read(read => read.Action("DisplayResults", "AccountEditTraceability").Data("ReadRequestData")))
ReadRequestData是一个javascript函数,用于准备您的请求数据,应该如下所示:
function ReadRequestData () {
return {
"filterByDate": $("#FromDate").data("kendoDatePicker").value()
};
}
应该工作!但是要注意日期格式,因为格式化,从客户端到服务器发送日期可能存在很多问题。
更具体地说,我将字符串化的JSON数据发送到服务器,然后由于日期格式的反序列化整个数据,我遇到了不同类型的问题。如果您要通过互联网搜索,那么有很多关于JSON与.NET DateTime相关问题的文章。