如何:(a)从浏览器向控制器发送JSON数据;和(b)将转换后的数据发送到ASP.NET MVC中的SQL Server?
我有一个表单,其中包括各种元素,并使用1对n制表器表进行数据输入。我已经成功地将这些元素中的数据组装成JSON字符串。我现在尝试完成以下两个步骤: 使用Ajax,将JSON对象发布到我的web服务器;和 在ASP.NET MVC控制器中,将反序列化的JSON数据上载到SQL Server 2016表中。 我发布JSON对象的客户端脚本如下所示:如何:(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
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删除整个参数即可!谢谢你的帮助。我的声望还不够高,所以还没有明显的得票率。很高兴能帮上忙。如果你能接受这个答案,那也不错。