将通过控制器接收的JSON保存到数据库MVC

时间:2018-07-19 12:51:00

标签: c# asp.net asp.net-mvc model-view-controller entity-framework-6

大家好,我大约从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错误。

1 个答案:

答案 0 :(得分:1)

  1. 欢迎加入MVC俱乐部
  2. 您不能返回不存在的视图,尤其是当客户期望json响应时
  3. 您需要将更改映射到上下文,然后才能保存它们

    Select