我想搜索Telerik MVC 2.0 GridView我有一个“索引”视图,首先渲染网格,然后点击“显示历史记录”{{ 1}}打开PartialView“ SearchGrid ”。
在此视图中有2个Telerik MVC DatePickers和一个提交按钮。单击“提交”按钮会将DatePicker值发送回UploadFiles Controller's
Ajax.ActionLink
行动。
在此操作中,我在UpdateDates 之间获取更新记录,例如 frmDate& toDate 值,来自使用WorkerService类和Services类的DB。
到目前为止一切正常,但我的问题是Ajax,在UploadFilesViewModel的GetUploadDescriptor与UploadFilesGrid绑定后,再次调用SearchByDates动作,再次调用JS代码上的url.Action,而不传递参数。首先调用此操作时,FormCollection不包含任何内容,但下次进行新调用时FormCollection值包含frmDate,toDate。
最后显示一个空网格。我不知道我做错了什么..
源代码: -
SearchByDates( DateTime? frmDate,DateTime? toDate)
答案 0 :(得分:0)
您不应在提交按钮上定义onclick事件处理程序。 Ajax.BeginForm构造通过自己的DatePickers值传递ajax请求。
答案 1 :(得分:0)
您同时收到2个请求:
由Ajax.BeginForm;
通过定义onclick =“aClick();”提交按钮中的属性('aClick'函数在其正文中触发另一个ajax请求。)
我建议您从提交按钮中删除onclick属性。 如果你需要在ajax表单提交之前运行javascript路由,你可以定义AjaxOptions.OnBegin选项:
新的AjaxOptions { ... OnBegin = “onBegin” }
function onBegin(e){
...
}
在此功能中,你可以这样做:
如果您的DatePicker控件位于内部 <%using(Ajax.BeginForm(“SearchByDates”,“UploadFiles”..构造这些都是所需的更改。 否则,您需要以这种方式定义onBegin函数:
function onBegin(e){
var to = $('#toDate').val();
var frm = $('#frmDate').val();
var req = e.get_request();
var req_body = req.get_body();
req_body += "&frmDate=" + frm + "&toDate=" + to;
req.set_body(req_body);
return true;
}
这确保您的DatePickers值也会被提交。