如何:(a)从浏览器向控制器发送JSON数据;和(b)将转换后的数据发送到ASP.NET MVC中的SQL Server?

如何:(a)从浏览器向控制器发送JSON数据;和(b)将转换后的数据发送到ASP.NET MVC中的SQL Server?,json,sql-server,ajax,asp.net-mvc,Json,Sql Server,Ajax,Asp.net Mvc,我有一个表单,其中包括各种元素,并使用1对n制表器表进行数据输入。我已经成功地将这些元素中的数据组装成JSON字符串。我现在尝试完成以下两个步骤: 使用Ajax,将JSON对象发布到我的web服务器;和 在ASP.NET MVC控制器中,将反序列化的JSON数据上载到SQL Server 2016表中。 我发布JSON对象的客户端脚本如下所示: var myJson = "the data from the form elements is programmatically inserted i

我有一个表单,其中包括各种元素,并使用1对n制表器表进行数据输入。我已经成功地将这些元素中的数据组装成JSON字符串。我现在尝试完成以下两个步骤:

使用Ajax,将JSON对象发布到我的web服务器;和 在ASP.NET MVC控制器中,将反序列化的JSON数据上载到SQL Server 2016表中。 我发布JSON对象的客户端脚本如下所示:

var myJson = "the data from the form elements is programmatically inserted into the JSON string";

// use parseJSON() to test the syntax
try {
    var obj = jQuery.parseJSON(myJson);
}
catch(error) {
    console.log(error);
}
$.ajax({
        type: "POST",
        url: "/Dailies/UploadJson/",
        dataType: 'json',
        data: JSON.stringify(myJson),
        contentType: 'application/json',
        crossDomain: true,
        cache: false,
        success: function(data) { console.log(data); }
});
[HttpPost]
public IActionResult UploadJson(Object jsonFile)
{
    // insert data into SQL Server table
}
在我的ASP.NET MVC控制器中调用的方法如下所示:

var myJson = "the data from the form elements is programmatically inserted into the JSON string";

// use parseJSON() to test the syntax
try {
    var obj = jQuery.parseJSON(myJson);
}
catch(error) {
    console.log(error);
}
$.ajax({
        type: "POST",
        url: "/Dailies/UploadJson/",
        dataType: 'json',
        data: JSON.stringify(myJson),
        contentType: 'application/json',
        crossDomain: true,
        cache: false,
        success: function(data) { console.log(data); }
});
[HttpPost]
public IActionResult UploadJson(Object jsonFile)
{
    // insert data into SQL Server table
}
注意:我已经在我的ASP.NET MVC应用程序中创建了相应的域模型,并且还向DbContext模型添加了一个DbSet引用。我已经验证了使用模拟数据将行插入SQL Server表的能力

当我在UploadJson方法中放置断点时,我发现jsonFile对象为null

在这一点上,我的观点有两个:

我似乎无法从客户端向web服务器获取JSON数据;和 我需要更好地理解如何将接收到的JSON数据转换为上传到我的数据库中。
非常感谢您提供的任何帮助。

尽管有很多这样的帮助,但这些帮助的答案通常是绑定到模型,而不仅仅是json字符串。但是这些也会帮助你

看起来有两件事:

我会将控制器更改为接收字符串而不是对象。 您需要更新传递给控制器的json数据,以匹配控制器的参数名。因此,在本例中,控制器将接收一个名为jsonFile的参数。因此,在$.ajax方法中,您需要将数据更新为如下内容: 更新:

删除application/json的内容类型
我进行了建议的更改,但控制器仍接收空值。我已经验证了Ajax调用发布的字符串不是空的。我很难理解为什么控制器没有接收到字符串。感谢您的帮助。我认为您需要删除内容类型,所以只需使用应用程序/json删除整个参数即可!谢谢你的帮助。我的声望还不够高,所以还没有明显的得票率。很高兴能帮上忙。如果你能接受这个答案,那也不错。