大家好,我大约从4-5天开始使用Visual Studio,我对此有很多疑问,由于Stack Overflow社区,我获得了更多的知识。 我正在尝试将JSON发布到控制器,并使用模型绑定将其保存到数据库。
我可以使用以下ajax将JSON发布到控制器:
$.ajax({
headers: {
"Content-Type": "application/json",
"Accept": "application/json"
},
type: 'GET',
url: 'https://api.github.com/search/repositories?q=repos+topic:' + $(this).attr('id') + '&sort=stars&order=desc&per_page=10',
success: function (data) {
**ajaxresult.push(data);**
debugger;
table.empty();
table.append("<thead><tr><th>Avatar</th><th>Name</th><th>Score</th><th>URL</th><th>Updated at</th></tr></thead>");
$.each(data.items, function (i, object) {
var row = $('<tr>').addClass('table-primary');
row.append('<td><img src=' + object.owner.avatar_url + 'height=50px width=50px/></td>');
row.append('<td>' + object.name + '</td>' + '<td>' + object.score + '</td>' + '<td>' + object.url + '</td>' + '<td>' + object.updated_at + '</td>');
table.append(row);
**ajaxresult[i] = { "Avatar": object.owner.avatar_url, "Name": object.name, "Score": object.score, "URL": object.url, "Updatedat": object.updated_at };**
});
**var myJSON = JSON.stringify(ajaxresult);**
table.append('</table>');
$('table').replaceWith(table);
debugger;
console.log(myJSON);
$.ajax({
contentType: 'application/json; charset=utf-8',
datatype:'JSON',
type: 'POST',
url: 'http://localhost:60294/Git/Updateto',
**data: myJSON,**
success: function (data) {
alert('Post Succesful');
},
error: function (data) {
alert('error');
}
});
}
});
});
这是我的控制器和型号:
[HttpPost]
public async Task<IActionResult> Updateto(GitJSON gitjson)
{
if (ModelState.IsValid)
{
gitjson.gitdList[0].AvatarURL=;
}
await _context.SaveChangesAsync();
return Ok();
}
型号:
public class gitd
{
public int ID { get; set; }
public string AvatarURL { get; set; }
public string Name { get; set; }
public decimal Score { get; set; }
public DateTime Updatedat { get; set; }
}
public class GitJSON
{
public List<gitd> gitdList { set; get; }
}
我的理解是在控制器中绑定了GitJSON模型。因此,结果是JSON对自动映射到gitd模型的公共成员。
研究之后,我了解到public List<gitd> gitdList { set; get; }
对应于被索引的对象列表。因此,我假设gitjson.gitdList[0].AvatarURL=;
指的是我传递的第一个JSON对象的AvatarURL属性。
我的理解正确吗?如果为true,则现在如何将JSON保存到数据库中。
如果我将return View();
放在Updateto控制器中,也会出现500错误。我尚未向Updateto控制器添加视图。这可能是唯一原因吗?另外,如果为true,应该不是未发现错误而不是500错误吗?
我向Updateto控制器添加了一个虚拟视图,但是return view();
仍然显示500错误。
答案 0 :(得分:1)
您需要将更改映射到上下文,然后才能保存它们
Select