我需要获取通过JSON发送的数据并将其保存到asp.net控制器中的模型
//JSON data
var dataType = 'application/json';
var data = {
ID: 'Zaki',
}
console.log('Submitting form...');
console.log(data);
$.ajax({
type: 'POST',
url: 'Save',
dataType: 'json',
contentType: dataType,
data: data,
success: function (result) {
console.log('Data received: ');
console.log(result);
}
});
控制器
[HttpPost]
public ActionResult Save([FromBody] string ID)
{
return Json (ID);
}
我在控制台中获取null,应该是zaki,然后我要从那里编写保存代码...
答案 0 :(得分:1)
在代码中的数据:数据中修改此行
数据:JSON.stringify(数据)
将数据发送到Web服务器时,数据必须是字符串,并且JSON.stringify方法将JavaScript对象转换为字符串。
另一种方法是,不获取原始字符串值,而是将参数包装到这样的类对象中
public class ParamObj
{
public string ID{get;set;}
}
,然后在您的控制器中获得此对象类型的参数,如下所示。
public ActionResult Save([FromBody] ParamObj data)
感谢
答案 1 :(得分:0)
我知道已经被标记为已回答,但这是另一种方式:
我没有使用绑定的FromBody属性。
控制器
public class JsonRequest
{
public string Id { get; set; }
}
[HttpPost]
public ActionResult Save(JsonRequest data)
{
return Json(data.Id);
}
我使用的是 accept ,而不是使用 dataType ,您无需将json转换为字符串。
为避免相对路径出现问题,我也在使用:url:'@ Url.Action(“ Save”,“ Home”)'。
JavaScript
function send()
{
//JSON data
var dataType = 'application/json';
var data = {
"id": "Zaki"
}
console.log('Submitting form...');
console.log(data);
$.ajax({
type: 'POST',
url: '@Url.Action("Save", "Home")',
accept: dataType,
data: data,
success: function (result) {
console.log('Data received: ');
console.log(result);
}
});
}
祝你项目顺利。
答案 2 :(得分:0)
另一种实现方法是简单地使用“动态”类型来处理json请求数据。看看:
[HttpPost]
public IActionResult YoutMethod([FromBody] dynamic requestData)
{
Log.Information(requestData.field1);
Log.Information(requestData.field2);
// ...
return Ok();
}