【问题标题】:Passing Date to WCF REST Service via Kendo UI (Javascript/Jquery)通过 Kendo UI (Javascript/Jquery) 将日期传递给 WCF REST 服务
【发布时间】:2013-04-13 19:09:33
【问题描述】:

想法 我是否有日历控件,可以从中选择不同的日期。根据选择的日期,我对 WCF 服务 (GetDealData()) 进行 ajax 调用以获取一些数据集。 请问有人可以看看这里有什么问题吗?两天来,我有点疯狂地试图弄清楚为什么我的 GetRemoteData() 方法每次执行 OnDateChange 方法时都会传递相同的日期(即 2012 年 10 月 25 日),即使我在日历控件上选择了不同的日期也是如此。是不是和json数据分配不正确有关?

$('#calendarContainer').kendoCalendar({
        format: "dd/MM/yyyy",
        culture: "en-GB",
        change: onDateChange
});

function onDateChange() {
        var date = kendo.toString(this.value(), 'dd/MM/yyyy');
        var bob = GetRemoteData(date);
        $("#grid").data("kendoGrid").dataSource.data(bob);
        $("#grid").data("kendoGrid").dataSource.read();          
    }

函数GetRemoteData(日期) {

        var chosenDate;

        if (typeof date=="undefined")
        {
            alert("it is null " + date);
            chosenDate = "25-10-2012";
        }
        else {
            alert("it is not null " + date);               
            chosenDate = date;
        }

        source = new kendo.data.DataSource({
         //   autoSync:true,
            transport: {
                read: {
                    type: "GET",
                    url: "http://localhost:35798/RestServiceImpl.svc/GetDealData",
                    dataType: "jsonp",
                    contentType: "application/json; charset=utf-8",
                    cache: false,
                    data: {
                        startDate:chosenDate
                    }
                }

            },
            schema: {
                model: {
                    fields: {
                        DealNumber: { type: "string" },
                        DealIssuer: { type: "string" },
                        Ticker: { type: "string" },
                        DealType: { type: "string" },
                        DealValue: { type: "number" },
                        DealStatus: { type: "string" },
                        DealPricingCompletionDate: { type: "date" }
                    }
                }
            },
            pageSize: 16
        });
        return source;
    }





    WCF Methods
    [OperationContract]
    [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json,
      BodyStyle = WebMessageBodyStyle.WrappedRequest,
      UriTemplate = "GetDealData?startDate={startDate}")]
    List<DealData> GetDealData(string startDate);


    public List<DealData> GetDealData(string startDate)
    {
        CultureInfo culture = new CultureInfo("en-GB");                                 
        List<DealData> model =                      Service.GetDealData(Convert.ToDateTime(startDate,culture));         
        return model;
    }       

【问题讨论】:

    标签: javascript wcf rest jquery kendo-grid


    【解决方案1】:

    从您的代码来看,这个问题似乎与 wcf 无关——它只是一个 JavaScript 问题。 看来,您的日期始终未定义。

    我会尝试找出this.value() 的值是多少,然后是kendo.toString(this.value(), 'dd/MM/yyyy') 的值。

    对我来说,这听起来像是一些格式问题。

    您可以使用浏览器的控制台来调试 JavaScript

    【讨论】:

    • 嗨,evgenyl!谢谢您的答复。是的 this.value() 显示我在日历控件中选择的确切值。这从警报语句中得到确认,以查看实际值是什么。问题出在我指定数据属性的传输部分。由于某些奇怪的原因,它总是将“25-10-2012”分配为要发送到 WCF Rest 服务的值,即使日期变量具有其他值。
    • 你调试了吗? if(typeof date== ...) 之后的 selectedDate 的值是多少?另外,我会尝试通过 Date() 更改字符串日期表示
    • 是的,我在 if(typeof date== ...) 之后调试它时得到了实际选择的值? ...这意味着变量“chosenDate”会自动获取从“date”变量传入的选定值。它只是当我调用 read 方法时它传递 null。我无法将其更改为 Date 对象,因为 WCF 服务器需要带有字符串参数的日期。我正在尽力将其作为字符串日期暂时发送。
    • 或者它可能与我检查日期值的方式或我将值分配给 selectedDate 的方式有关
    • 尝试将“null”值修改为 Date.now() - 这将为 2 个请求提供 2 个不同的日期
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    相关资源
    最近更新 更多