【问题标题】:Formatted String and DateTime?格式化字符串和日期时间?
【发布时间】:2015-07-27 10:01:24
【问题描述】:

我有一个 WCF 课程,

    [DataContract]
    public class Membership
    {
        [DataMember]
        public int ID;

        public DateTime? StartDate{ get; set; }
        [DataMember(EmitDefaultValue = false, Name = "StartDate")]
        public string StartDateString
        {
            get
            {
                if (this.StartDate.HasValue)
                    return this.StartDate.Value.ToString("dd/MM/yyyy HH:mm:ss");
                else
                    return null;
            }
            set
            {
                this.StartDate = Utils.ToNullableDateTime(this.StartDateString);
            }
        }

        public DateTime? EndDate { get; set; }
        [DataMember(EmitDefaultValue = false, Name = "EndDate")]
        public string EndDateString
        {
            get
            {
                if (this.EndDate.HasValue)
                    return this.EndDate.Value.ToString("dd/MM/yyyy HH:mm:ss");
                else
                    return null;
            }
            set
            {
                this.EndDate = Utils.ToNullableDateTime(this.EndDateString);
            }
        }


        public Membership() 
        {
                    //do something
        }
    }
}

当我在 C# 中填充此对象并将其发送到 JavaScript 时,它会发送正确的值,但是当我在 WCF 方法中为它调用 post 查询时,它会给我 StartDate、StartDateString、EndDate 和 EndDateString,

var memberships = [];
memberships.push({
    ID: id,
    StartDateString: $("#" + id + "governmentsddatepicker").val(),
    EndDateString: $("#" + id + "governmenteddatepicker").val()
});

在调试器中,我从 jQuery 选择器中得到正确的值,它只是在 WCF 方法中,我得到 null,

 $.ajax({
        url: url,
        type: "POST",
        data: '{ "Memberships": ' + JSON.stringify(memberships) + '}',
        contentType: "application/json; charset=utf-8"
    })

在 WCF 中,

    public void UpdateMemberships(Membership[] memberships)
    {
        //do some work 
       // GETTING all dates here null
    }

Rest ID 和其他数据成员(我删除以缩短这个问题)工作正常。

除了上面的这个错误 - 我想要

我想控制将 DateTime 返回给客户端的格式方式,但我也想控制从客户端接收 DateTime 并相应地填充我的日期字符串的方式

编辑

这是JS在stringy函数之后发布的,

JSON.stringify(会员资格) = "[{"ID":"53","StartDateString":"23/07/2015","EndDateString":"28/07/2015"}]"

【问题讨论】:

    标签: javascript c# jquery wcf


    【解决方案1】:

    这可能是一个愚蠢的答案,但为什么你在 data : 之后使用 ''

    你使用:

     data: '{ "Memberships": ' + JSON.stringify(memberships) + '}',
    

    但我认为你必须使用

    data: { "Memberships":  JSON.stringify(memberships)},
    

    【讨论】:

    • 请在我的问题中查看编辑,我怀疑我发布到 WCF 服务的数据是否有任何问题 :(,同样在 WCF 中,我得到了除此 dateTime 字段和相关字符串之外的所有数据成员
    • 有时 javascript 不能很好地工作。我不明白你为什么在 json.stringify 之后使用“加号”。尝试使用这个: data: "{'data1':'" + value1+ "', 'data2':'" + value2"'}",
    猜你喜欢
    • 2017-06-14
    • 1970-01-01
    • 2023-03-14
    • 2012-09-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    相关资源
    最近更新 更多