Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在ASP.NET内核中将带有Ajax的参数传递给控制器时总是空的?_C#_Asp.net Core_Parameter Passing_Asp.net Ajax - Fatal编程技术网

C# 为什么在ASP.NET内核中将带有Ajax的参数传递给控制器时总是空的?

C# 为什么在ASP.NET内核中将带有Ajax的参数传递给控制器时总是空的?,c#,asp.net-core,parameter-passing,asp.net-ajax,C#,Asp.net Core,Parameter Passing,Asp.net Ajax,它可以工作,但传递的参数始终为null,此代码在ASP.NET Framework(.NET Framework)上的其他项目上工作,但在ASP.NET Core中不工作 var inputParams = "{namex: '" + 'testdata' + "'}"; var xhr = $.ajax({ url: "/Test/MyFunction", type: 'POST', dataType: 'json', data: inputParams,

它可以工作,但传递的参数始终为null,此代码在ASP.NET Framework(.NET Framework)上的其他项目上工作,但在ASP.NET Core中不工作

var inputParams = "{namex: '" + 'testdata' + "'}";

var xhr = $.ajax({
    url: "/Test/MyFunction",
    type: 'POST',
    dataType: 'json',
    data: inputParams,
    contentType: 'application/json; charset=utf-8',
    success: function (msg) {

    },
    error: function (xhr) {

    }
});
测试控制器包含:

   [HttpPost]
   public JsonResult MyFunction(string namex) <--- namex is always NULL
    {
        return Json(false);
    }
[HttpPost]

公共JsonResult MyFunction(字符串namex)将FromBodyAttribute添加到参数


MyFunction([FromBody]string namex)

数据未以正确格式发送,内容无法正确绑定到操作

首先,正确构建要发布的有效负载

var inputParams = { namex: "testdata" }; //<-- NOTE JavaScript

var xhr = $.ajax({
    url: "/Test/MyFunction",
    type: 'POST',
    dataType: 'json',
    data: JSON.stringify(inputParams), //<-- NOTE CONVERSION TO JSON
    contentType: 'application/json; charset=utf-8',
    success: function (msg) {

    },
    error: function (xhr) {

    }
});
最后重构操作以绑定到请求主体中的预期数据

[HttpPost]
public IActionResult MyFunction([FromBody]MyModel model) {
    if(ModelState.IsValid) {
        string namex = model.namex;
        return Ok();
    }
    return BadRequest(ModelState);
}

Reference

刚刚发送了它,没有对象

var inputParams = 'testdata';

var xhr = $.ajax({
    url: "/Test/MyFunction",
    type: 'POST',
    dataType: 'json',
    data: inputParams,
    contentType: 'application/json; charset=utf-8',
    success: function (msg) {

    },
    error: function (xhr) {

    }
});



var xhr=$.ajax({

url:“/Test/MyFunction?namex=testdata”//我找到了另一个类似于您的答案,但为什么我要创建一个模型(MyModel)只是为了向我的控制器传递一个简单的变量,如果不创建一个额外的模型,就没有办法做到这一点?@motevalizadeh实际代码将如何使用?我只是建议Asp.Net Core中模型绑定文档最推荐的方法。请查看答案中提供的链接。
var inputParams = 'testdata';

var xhr = $.ajax({
    url: "/Test/MyFunction",
    type: 'POST',
    dataType: 'json',
    data: inputParams,
    contentType: 'application/json; charset=utf-8',
    success: function (msg) {

    },
    error: function (xhr) {

    }
});

var xhr = $.ajax({
    url: "/Test/MyFunction?namex=testdata", // <------ here
    type: 'POST',
    dataType: 'json',
    contentType: 'application/json; charset=utf-8',
    success: function (msg) {

    },
    error: function (xhr) {

    }
});