【问题标题】:how to pass java script values to controller using post method in .net core application?如何在 .net 核心应用程序中使用 post 方法将 javascript 值传递给控制器​​?
【发布时间】:2017-11-24 12:05:20
【问题描述】:

我正在开发 .net 核心应用程序。我需要使用 Post 方法将 java 脚本值传递给我的控制器。我正在使用java脚本代码如下

 data = {'imageValue':'some test'}
    $.ajax({ 
      type: 'Post',          
      url: '/Home/UploadData',      
      dataType: 'json',
      contentType: 'application/json',
      data: data,
      success: function (data) {
      alert(data);      
      console.log('sample');                      
      },     
      error:  function(){
    }
    });

我的控制器是 [HttpPost]public string UploadData([FromBody] string imageValue) {return imageValue;} 但 imageValue 总是返回 null。如果我的代码有任何错误,请解决问题。

【问题讨论】:

  • 什么返回null?您的预期行为是什么?现在和何时发生了什么?
  • 你能发布 C# 控制器吗?我想你错过了[FromBody] 属性
  • 你是否从服务器端发送了正确的 json 对象?

标签: javascript asp.net-mvc asp.net-core-mvc .net-core


【解决方案1】:

当您进行 ajax 调用时,您应该对 javascript 对象进行字符串化并发送它。您可以使用JSON.stringify 方法将 js 对象转换为等效的 JSON 字符串。

var data = {'imageValue':'some test'}
$.ajax({
    type: 'Post',
    url: '/Home/UploadData',
    dataType: 'json',
    contentType: 'application/json',
    data: JSON.stringify(data),
    success: function (data) {

        console.log('sample', data);
    },
    error:  function(){
    }
});

现在由于 ajax 调用在请求正文中发送数据(因为它是 POST 请求),您需要使用 [FromBody] 属性装饰 HttpPost 操作方法参数,以便模型绑定器知道它应该从请求正文并映射到方法参数(YourViewModel) 对象。

public IActionResult UploadData([FromBody] YourViewModel d)
{
    return Json(d);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 1970-01-01
    • 2021-12-10
    相关资源
    最近更新 更多