我正在运行以下 AJAX 调用。
var submission = {};
submission.input = [];
submission.input.push({ Id: "{ab684cb0-a5a4-4158-ac07-adff49c0c30f}" });
submission.input.push({ Id: "{bb684cb0-a5a4-4158-ac07-adff49c0c30f}" });
$.ajax({
url: "http://" + "localhost:49642/Controller/Action",
data: submission
});
它按预期工作,在我的控制器中我可以看到两个元素。但是,Id字段全为零。我确定我未能匹配服务器端对象的定义,但我现在很恼火和沮丧,以生成更多关于如何将数据推送到服务的建议。
数据模型是这样的。
public class Thingy
{
public Guid Id { get; set; }
public IEnumerable<Guid> Blobb { get; set; }
}
我尝试在客户端使用不同的括号类型、撇号等封闭 guid。无济于事。我能忘记什么?!
编辑
我需要澄清我的信息对象的结构定义。控制器设置为接收以下内容。
public ActionResult SelectionStorage(IEnumerable<Stuff> stuff)
{
Session["Stuff"] = stuff;
return null;
}
Stuff类的定义更复杂,但以下内容足以作为 POC。
public class Stuff
{
public Guid Id { get; set; }
public IEnumerable<Guid> Ids { get; set; }
public Dictionary<String, decimal> Amounts { get; set; }
}
因此,在客户端上,我正在对提交的数据对象进行以下设置。
var submission = {};
var subIds = [];
subIds.push("{ab684cb0-a5a4-4158-ac07-adff49c0c30f}");
subIds.push("{bb684cb0-a5a4-4158-ac07-adff49c0c30f}");
submission.input = [];
submission.input.push({
Id: "{cb684cb0-a5a4-4158-ac07-adff49c0c30f}",
Ids: subIds,
Amounts: null
});
请注意,金额将与null不同,但我什至还没有遇到这种头痛。
编辑 2
新尝试——更简单的方法。在 JS 中,我发送以下内容。
var stuff = {};
stuff.input = [];
stuff.input.push("{ab684cb0-a5a4-4158-ac07-adff49c0c30f}");
stuff.input.push("{bb684cb0-a5a4-4158-ac07-adff49c0c30f}");
$.ajax({
url: ...,
data: stuff,
type: "POST",
success: ...,
error: ...
});
在 C# 中接收结束时,我有这个。
public ActionResult MyAction(List<String> input) { ... }
这给出了null。我不明白为什么。