Kendo ui 剑道UI(MVC)网格AJAX绑定表单数据未发送

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

有人知道网格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", "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
    }