我使用AJAX & WCF
我想发送一个 KeyValuePair
数组:
服务中的数组(在特定类中):
[DataMember]
public KeyValuePair<string, CustomDay>[] WorkDays { get; set; }
CustomDay.cs:
[DataContract]
public class CustomDay
{
[DataMember]
public CustomTime Start { get; set; }
[DataMember]
public CustomTime End { get; set; }
}
CustomTime.cs:
[DataContract]
public class CustomTime
{
[DataMember]
public int Hour { get; set; }
[DataMember]
public int Minute { get; set; }
}
我通过以下函数在JavaScript
中创建数组:
function CreateWorkDaysDictonary() {
var workdaysdic = new Object();
if ($('#checkbox-sunday').is(':checked')) {
var starttime = { Hour: $('#select-from-hour-sunday').val(),
Minute: $('#select-from-minute-sunday').val()
};
var endtime = { Hour: $('#select-until-hour-sunday').val(),
Minute: $('#select-until-minute-sunday').val()
};
workdaysdic["Sunday"] = { Start: starttime, End: endtime };
}
if ($('#checkbox-monday').is(':checked')) {
var starttime = { Hour: $('#select-from-hour-monday').val(),
Minute: $('#select-from-minute-monday').val()
};
var endtime = { Hour: $('#select-until-hour-monday').val(),
Minute: $('#select-until-minute-monday').val()
};
workdaysdic["Monday"] = { Start: starttime, End: endtime };
}
//and so on...
return workdaysdic;
}
在JS
中创建的数组:
但是WCF
数组到达没有数据:
我不明白为什么会这样,我会很高兴有人可以帮助我。
我将对象作为JSON
发送给WCF:
当我尝试创建对象时,请说:
function CreateWorkDaysDictonary() {
var workdaysdic = new Array();
if ($('#checkbox-sunday').is(':checked')) {
var starttime = { Hour: $('#select-from-hour-sunday').val(),
Minute: $('#select-from-minute-sunday').val()
};
var endtime = { Hour: $('#select-until-hour-sunday').val(),
Minute: $('#select-until-minute-sunday').val()
};
workdaysdic[workdaysdic.length] = { "Sunday": { Start: starttime, End: endtime}};
}
if ($('#checkbox-monday').is(':checked')) {
var starttime = { Hour: $('#select-from-hour-monday').val(),
Minute: $('#select-from-minute-monday').val()
};
var endtime = { Hour: $('#select-until-hour-monday').val(),
Minute: $('#select-until-minute-monday').val()
};
workdaysdic[workdaysdic.length] = { "Monday": { Start: starttime, End: endtime} };
}
//and so on...
return workdaysdic;
}
我收到错误:the server responded with a status of 400 (Bad Request)
答案 0 :(得分:1)
最后,我设法通过以下方式解决问题:
我创建了一个对象列表(WCF)而不是数组:
[DataMember]
public List<DataItem> WorkDays { get; set; }
DataItem.cs:
[DataContract]
public class DataItem
{
[DataMember]
public string Key;
[DataMember]
public CustomDay Value;
}
我发送了这样的列表(JS):
function CreateWorkDaysDictonary() {
var workdaysdic = new Array();
if ($('#checkbox-sunday').is(':checked')) {
var starttime = { Hour: $('#select-from-hour-sunday').val(),
Minute: $('#select-from-minute-sunday').val()
};
var endtime = { Hour: $('#select-until-hour-sunday').val(),
Minute: $('#select-until-minute-sunday').val()
};
workdaysdic.push({ Key: "Sunday", Value: { Start: starttime, End: endtime} });
}
if ($('#checkbox-monday').is(':checked')) {
var starttime = { Hour: $('#select-from-hour-monday').val(),
Minute: $('#select-from-minute-monday').val()
};
var endtime = { Hour: $('#select-until-hour-monday').val(),
Minute: $('#select-until-minute-monday').val()
};
workdaysdic.push({ Key: "Monday", Value: { Start: starttime, End: endtime} });
}
//and so on...
return workdaysdic;
}
它有效! :)
我将在这里提到它可以使用字典而我没有使用它,因为我必须对xml文件进行序列化。