【发布时间】:2015-01-09 23:07:10
【问题描述】:
好的,这就是我所在的地方。
我有一些代码可以将一组好东西发送到 .NET WebAPI (c#)。
var questions = [];
$('#questions').find('input').each(function(){
var text = $(this).val();
questions.push({ ID: 123, Question: text });
});
$.ajax({
type: 'POST',
url: _apiPath + '/main/savequestions',
data: { "" : questions }
}).done(function(data){
alert(JSON.stringify(data));
});
所以我不久前了解到 .NET Web API 会与数组混淆,并且存在一个已知错误,这就是为什么您必须使用 "" 作为属性名称来发送数据。
这是我的 web api 控制器:
[Route("main/savequestions")]
[HttpPost]
public List<Question> SaveQuestions(List<Question> questions)
{
using (var mc = new MyContext())
{
List<Question> list = new List<Question>();
if (questions != null)
{
foreach (var item in questions)
{
var dbQ = new Question();
dbQ.ID = Guid.NewGuid();
dbQ.ToolID = item.ID;
dbQ.Question = item.Question;
mc.Questions.Add(dbQ);
list.Add(dbQ);
}
}
mc.SaveChanges();
return list;
}
}
当我们在桌面上时,这可以正常工作。一切都保存...工作...真棒。
所以我们正在使用 PhoneGap,当我们使用 phonegap 应用程序模拟运行此代码的应用程序时,不会保存任何数据。我们已经检查并确保我们发送的 JSON 是相同的......但是当我们运行它时,控制器似乎得到一个空数组,因此它没有保存任何东西。
这种不一致足以让我发疯。
救命!
大卫
【问题讨论】:
标签: javascript jquery ajax cordova asp.net-web-api