Kendo ui 剑道UI(MVC)网格AJAX绑定表单数据未发送
有人知道网格Ajax Read fluent API的“数据”部分是做什么的吗 我问的原因是因为我的设置如下:Kendo ui 剑道UI(MVC)网格AJAX绑定表单数据未发送,kendo-ui,kendo-grid,kendo-asp.net-mvc,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,有人知道网格Ajax Read fluent API的“数据”部分是做什么的吗 我问的原因是因为我的设置如下: // razor setup .Kendo() .Grid<MyModel>() .Name("KENDO_UI_GRID") .DataSource(d => d.Ajax() .Read(r => r .Data("k_get_datafromform") .Action("ResultsJson", "Con
// razor setup
.Kendo()
.Grid<MyModel>()
.Name("KENDO_UI_GRID")
.DataSource(d =>
d.Ajax()
.Read(r => r
.Data("k_get_datafromform")
.Action("ResultsJson", "ControllerName")
)
.Events(e => e.RequestEnd("k_grid_requestend"))
.Events(e => e.Error("k_grid_error"))
.PageSize(Model.MaxItemsPerPage))
.Columns(// etc etc
// javascript function
function k_get_datafromform() {
var theFormFound = jQuery(".search-form:first");
if (theFormFound) {
// custom helper to convert form to object
return theFormFound.serializeObject();
};
return null;
}
//剃须刀安装
.Kendo()
.Grid()
.Name(“剑道网格”)
.DataSource(d=>
d、 Ajax()
.Read(r=>r
.Data(“k_get_datafromform”)
.Action(“ResultsJson”、“ControllerName”)
)
.Events(e=>e.RequestEnd(“k_grid_RequestEnd”))
.Events(e=>e.Error(“k\u grid\u Error”))
.PageSize(Model.MaxItemsPerPage))
.Columns(//等
//javascript函数
函数k_get_datafromform(){
var theFormFound=jQuery(“.search form:first”);
如果(theFormFound){
//用于将窗体转换为对象的自定义帮助器
返回formfound.serializeObject();
};
返回null;
}
但是当网格发布结果时,它不会发送数据。表单集合包含常用的剑道内容(页面大小等)但是没有其他问题。我做错了什么??当数据源执行操作时,您正在使用数据函数向服务器发送附加参数—在您的情况下是读取操作 因此,如果您从函数返回类似{foo:42}的内容,那么这个等于42的参数将被发送到服务器 在您的情况下,我假设序列化对象的结果是不正确的 你能试着看看你的物体是什么样子并和我们分享吗 你可以用
alert(kendo.stringify(theFormFound.serializeObject()));
或
例如,为了研究需要额外数据的DropdownList(为了更清楚起见,省略了一些内容),您会注意到.data标记中的javascript函数“onaAdditionalData”
@(Html.Kendo().DropDownListFor(x => x.FromOpportunity)
.Name("OpportunityDDL")
.DataSource(source => {
source.Read(read =>
{
read.Action("SomeMethod", "SomeController")
.Data("OnAdditionalData");
})
)
还有JS
function OnAdditionalData() {
var Item = 3
return {
partyItem: Item
};
}
因此,当读取数据时,它会说ok,转到SomeController中的SomeMethod并读取数据,但会说wait!我需要数据,我要带什么到聚会上。它查看JS函数并说ok,我有一个partyItem,值为3
public JsonResult SomeMethod(int partyItem)
{
// partyItem will == 3
}
请注意,控制器中的“partyItem”与函数中的“partyItem”名称相同,它们必须相同。请注意,如果您希望控制器中有字符串,则该字符串将不起作用。如果它是var Item=“3”
,则它将起作用。来自Telerik:
“这是已修复的第一个service pack版本(2013.3.1316)中的已知问题。读取请求的附加数据未包含在序列化请求数据中,也未发送到服务器。请将您正在使用的版本更新为最新的service pack(2013.3.1324)可从您的帐户下载。对于由此造成的不便,我深表歉意。“
就是这样。谢谢你的回答。返回的对象是表单的完美JavaScript文本表示。我还可以看到发送到服务器的内容,而这些数据肯定没有发送。我已经尝试/跟踪/记录/调试了我能想到的一切!!我不必使用Ajax绑定,但我下面的答案是工作完成这不是我要问的。我在做一个ajax请求。嗯,这正是你要问的。你问了。数据做什么,我告诉了你它做什么。感谢你的回答。恕我直言,我说的是ajax方法。数据,而不是服务器端。谢谢你!我也遇到过同样的情况,也有exac这不是同一个版本。这是你的运气。
public JsonResult SomeMethod(int partyItem)
{
// partyItem will == 3
}