Javascript AJAX post数据到达ASP.NET Core 2.1.1控制器时为空

Javascript AJAX post数据到达ASP.NET Core 2.1.1控制器时为空,javascript,c#,controller,asp.net-ajax,asp.net-core-2.1,Javascript,C#,Controller,Asp.net Ajax,Asp.net Core 2.1,我在将razor页面中的java脚本中的值发布到控制器时遇到问题。-收到的值始终为空 我看到有人问过类似的问题,但没有找到解决问题的正确方法 我在控制器中找到了一个断点,(因此路由是可以的),但是传递的参数值总是空的,并且不是java脚本中最尖锐的,我想从你们这里得到一些提示 我基本上有以下java脚本: var clickButton = function (buttonId) { $.ajax({ type: "POST",

我在将razor页面中的java脚本中的值发布到控制器时遇到问题。-收到的值始终为空

我看到有人问过类似的问题,但没有找到解决问题的正确方法

我在控制器中找到了一个断点,(因此路由是可以的),但是传递的参数值总是空的,并且不是java脚本中最尖锐的,我想从你们这里得到一些提示

我基本上有以下java脚本:

 var clickButton = function (buttonId) {
        $.ajax({
            type: "POST",
            async: false,
            cache: false,
            crossDomain: false,
            contentType: "application/json; charset=utf-8",
            url: "v1/buttons",
            dataType: "json",
            data: '{ buttonId:'+JSON.stringify( "buttonId" ) + '}',
            success: function (result) {
                //console.log("clickButton OK => " + result);
            }, //success: function (result) {
            timeout: 500 // 0.5 sec.
        }); //$.ajax({
    }//var clickButton = function(buttonNo) {
还有下面的C#控制器代码:

[Route( "v1/[controller]" )]
public class ButtonsController : Controller
{
 ...
  [HttpPost]
  public IActionResult OnButtonClicked( string buttonId )
  {
    // buttonId = null !!!
   ...
我在将布尔值传递到另一个控制器时遇到了类似的问题。 那里的谎言总是假的。。i、 e.默认值。
我想知道这是否是一个安全问题,当用户未经授权时,不允许帖子包含数据…

问题出在JSON中,我通过这个小改动获得了值,但它隐藏得很好

 var clickButton = function (buttonNo) {
     console.log("clicked: " + buttonNo);
     $.ajax({
         type: "POST",
         url: "v1/buttons/",
         dataType: "json",
         data: { "buttonId": buttonNo }, // < === this is where the problem was !!
         success: function (result) {
         }, //success: function (result) {
      }); //$.ajax({
    }//var clickButton = function(buttonNo) {

试试简单的
数据:{buttonId:buttonId}
。我认为
JSON.stringify
是不必要的,除非您想在控制器端传递作为数组或
List
参数传递的JSON对象。我以前尝试过,现在又尝试过了。它没有解决问题,buttonId在C#controller中仍然为空。(但你是对的,JSOn会把这里搞得乱七八糟
[Route( "v1/[controller]" )]
public class ButtonsController : Controller
{
  ...
  [HttpPost]
  public IActionResult PostButtonClick( string buttonId ) {
    // buttonId now has a value !!!
  }
}