我正在尝试将Ajax请求中的Json数据发送到一个安静的Web服务。 这不是我第一次这样做,但这次类型更复杂。
这是网络服务方法:
InstanceServiceResponse<BlogPostData> CreatePost(ObjectCollection ressources);
对象ObjectCollection
定义如下:
public class ObjectCollection : ISerializable, IEnumerable
{
Dictionary<string, object> objectsValue;
public ObjectCollection()
{
objectsValue = new Dictionary<string, object>();
}
public ObjectCollection(IDictionary<string, object> parameters)
{
objectsValue = new Dictionary<string, object>(parameters);
}
...
...
}
ressources参数的创建方式如下:
function GetRessources() {
var Ressources = [];
$.each($("#ressources-holder > div"), function (key, value) {
Ressources.push( { "name": $(value).children().first().text().slice(0, -1), "id": $(value).attr('id') } );
});
return Ressources;
}
Json创建的是:
[{"name":"tototititata","id":"107875"},{"name":"test","id":"107877"}]
关于错误和我在其他与同一问题相关的SO帖子中看到的内容,似乎是因为参数的名称。
但是,这就是为什么我发布一个新问题,我的类型(ObjectCollection
)没有任何公共字段,我可以“绑定”我的参数。
现在我有点黑了,任何帮助和建议都会非常感激。
修改
由于我没有找到任何适用的解决方案,我使用旁路。
我发送Dictionary<string, object>
就像这样:
function GetRessources() {
var Ressources = [];
$.each($("#ressources-holder > div"), function (key, value) {
Ressources.push({ "Key": $(value).children().first().text().slice(0, -1), "Value": $(value).attr('id') });
});
return Ressources;
}
然后服务器端用它创建一个新的ObjectCollection
。
这对我认为的任何人都无济于事,但我会为后人保留这个问题。
答案 0 :(得分:0)
为了正确发送json对象,该对象必须与其绑定的字段相关。
意思是,如果你想在你的json请求中发送名字,你必须定义一个'name'字段并在json请求中发送它,否则你将无法成功传递它。
你需要做的是尝试创建相关字段,以便与json正确地工作,创建实体或甚至尝试在json集合实体中工作。
或者,不是使用json push,而是尝试使用json ajax请求,看看它是如何工作的。
无论如何,就我所见,最快的解决方案就是尽可能多地与公共领域合作。