如何使用 Kendo UI 将参数传递给 HttpHandler?

Posted

技术标签:

【中文标题】如何使用 Kendo UI 将参数传递给 HttpHandler?【英文标题】:How do you pass parameters to an HttpHandler using Kendo UI? 【发布时间】:2012-02-29 11:32:55 【问题描述】:

我对 jQuery AJAX 非常熟悉,并且一直在使用它。 Kendo UI 建立在 jQuery 之上,并使用 AJAX。使用 jQuery 与 HttpHandler 交互和传递参数很容易,您只需执行以下操作:

使用 JQUERY AJAX:

$.ajax(
    complete: self.onComplete,
    data:  SiteId: 777 ,  // <--- this gets appended to the post
    dataType: 'json',
    error: self.onError,
    success: self.onSuccess,
    url: self.url
);

我的问题: 我正在尝试找到data(上图)的 KendoUI 等价调用。

虽然网格确实填充了从 HttpHandler 传回给我的数据 参数未提供给 HttpHandler(见下文)

剑道密码看起来像:

    <script type="text/javascript">

        $(document).ready(function () 

            var dataSource = new kendo.data.DataSource(
                transport:
                    
                        read: 
                            url: "Handlers/Attempt1Synch.ashx",
                            dataType: "json",
                            contentType: "application/json; charset=utf-8",
                            type: "POST",
                            data:  SiteId: 777 
                        
//                        parameterMap: function (data, operation) 
//                            return JSON.stringify(data);
//                        
                    ,
                schema:  data: "People" 
            );

            $("#grid").kendoGrid(
                height: 360,
                width: 500,
                dataSource: dataSource,
                groupable: true,
                scrollable: true,
                sortable: true,
                pageable: true,
                columns:
                [
                    field: "Id",
                    width: 0
                ,
                 
                     field: "FirstName",
                     width: 90,
                     title: "First Name"
                 ,
                
                    field: "LastName",
                    width: 90,
                    title: "Last Name"
                ,
                
                    width: 100,
                    field: "City"
                ,
                
                    field: "Title"
                ,
                
                    field: "BirthDate",
                    title: "Birth Date",
                    template: '#= kendo.toString(BirthDate,"dd MMMM yyyy") #'
                ,
                
                    width: 50,
                    field: "Age"
                ]
            );
        );
    </script>

    <div id="grid">
    </div>

我的 HTTP 处理程序看起来像:

public class Attempt1Synch : IHttpHandler

    public void ProcessRequest(HttpContext context)
    
        var siteId = Convert.ToInt32(context.Request["SiteId"]);

        var serializer = new JavaScriptSerializer();
        var response = mock(siteId);

        context.Response.ContentType = "text/json";
        context.Response.Write(serializer.Serialize(response));
        context.Response.End();
    

    public bool IsReusable
    
        get
        
            return false;
        
    

【问题讨论】:

【参考方案1】:

我发现这是他们之前版本中的一个已知问题。 The newest release fixes this。因此,您必须首先下载最新版本的KendoUI,如下所示:

V1 2011 SP1(版本 2011.3.1407)- 2012 年 2 月 - 请参阅“OData 不提交用户定义的参数”

但是,上面的代码存在问题。代码应完全省略POST 命令。

新的数据源应如下所示: 只有DataSource 对象不正确。新的应该是这样的 -

var dataSource = new kendo.data.DataSource(                 
    transport:                     
                             
        read: 
        
            url: "Handlers/Attempt1Synch.ashx",
            dataType: "json",
            contentType: "application/json; charset=utf-8",
            data:  SiteId: 777 
        ,
        schema:  data: "People"              
);

【讨论】:

感谢简洁的回答。您是否推荐任何有关 Kendo UI 的博客或教程。我发现 Telerik 的文档和示例缺乏。 不,很抱歉我不得不使用“反复试验”来解决这个问题。是的,Telerik 的文档网站确实很烂。

以上是关于如何使用 Kendo UI 将参数传递给 HttpHandler?的主要内容,如果未能解决你的问题,请参考以下文章

Kendo UI - 将参数传递给read()中的JS函数.data()

jQuery UI 问题。如何将参数传递给函数

如何在不覆盖数据源参数的情况下将附加参数传递给剑道模板

如何将参数传递给 Express post HTTP 方法?

通过 UI 将参数传递给 Airflow 的作业

有没有办法将参数传递给Runnable? [复制]