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



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

  1. 使用Ajax,将JSON对象发布到我的web服务器;以及
  2. 在ASP.NET MVC控制器中,将反序列化的JSON数据上载到SQL Server 2016表中

我的用于POST 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); }
});

在我的ASP.NET MVC控制器中调用的方法如下所示:

[HttpPost]
public IActionResult UploadJson(Object jsonFile)
{
// insert data into SQL Server table
}

注意:我已经在我的ASP.NET MVC应用程序中创建了适当的域模型,并且还添加了对DbContext模型的DbSet引用。我已经验证了使用模拟数据将行插入SQL Server表的能力。

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

在这一点上,我的困惑有两方面:

  1. 我似乎无法将JSON数据从客户端获取到web服务器;以及
  2. 我需要更好地理解如何将JSON数据(一旦收到(转换为上传到我的数据库中

非常感谢您的帮助。

尽管有很多问题与此相关,但这些问题的答案通常指绑定到模型,而不仅仅是json字符串。但这些也会对你有所帮助。

看起来有两件事:

  1. 我会将控制器更改为接收string而不是对象
  2. 您需要更新传递给控制器的json数据,以匹配控制器的参数名称。因此,在这种情况下,控制器将接收一个名为jsonFile的参数。因此,在$.ajax方法中,您需要将data更新为以下内容:
data: { jsonFile: JSON.stringify(myJson) }

更新:

  1. 删除application/json的内容类型

相关内容

  • 没有找到相关文章

最新更新