Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.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
Javascript Ajax向控制器发送空字符串?_Javascript_C#_Ajax_Asp.net Core_Model View Controller - Fatal编程技术网

Javascript Ajax向控制器发送空字符串?

Javascript Ajax向控制器发送空字符串?,javascript,c#,ajax,asp.net-core,model-view-controller,Javascript,C#,Ajax,Asp.net Core,Model View Controller,我使用ajax调用尝试向控制器发送字符串,但返回null 我的控制器 [HttpPost] public async Task<string> CreateCarouselItem(string itemText){ var newItem = new CarouselItem(itemText); await CarouselHelper.AddAndSaveAsync(newItem, _context); return itemText; } dat

我使用ajax调用尝试向控制器发送字符串,但返回null

我的控制器

[HttpPost]
public async Task<string> CreateCarouselItem(string itemText){
    var newItem = new CarouselItem(itemText);
    await CarouselHelper.AddAndSaveAsync(newItem, _context);

    return itemText;
}

dataType
选项定义预期的响应类型,而不是您要发送的数据类型。为此,您需要
contentType
,它需要实际的mime类型,即
text/plain
,而不仅仅是“text”

然后,您将发送一个对象而不是字符串。如果您只需要字符串,那么您应该:

data: boxText
(不带花括号)

最后,在您的操作中,默认绑定类型是
x-www-form-urlencoded
,它需要一个键值对。您可以再次将数据更改为:

data: 'itemText=' + boxText
或者您可以从身体上进行绑定:

public async Task<string> CreateCarouselItem([FromBody]string itemText)

您将在操作参数上收到的参数名称是
itemText
,然后您需要在ajax中将数据配置为
data:{itemText:boxText}
,以绑定
itemText

$.ajax({
        type: "POST",
        url: '/Home/CreateCarouselItem',
        dataType: "text",
        data: {itemText: boxText },
        traditional: true,
        success: function (data) {
            console.log(data);
        },
        error: console.log("it did not work"),
    });

发送
boxText
并查找
itemText
?因此我将数据类型更改为contentType,将“text”替换为“text/plain”,并修复了您提到的数据,但仍然返回空值。如果我添加[FromBody],它将成为415状态代码。我不能实例化TextInputFormatter,因为它是一个抽象类,对此我很抱歉。我从来没有真正需要接受纯文本。您可以简单地创建一个继承自该类的具体类,然后重新创建该具体类。但是,最好的办法是简单地让它以
x-www-form-urlencoded
的形式出现,然后发送
数据:“itemText=“+boxText
services.AddMvc(o =>
{
    o.InputFormatters.Add(new TextInputFormatter());
});
$.ajax({
        type: "POST",
        url: '/Home/CreateCarouselItem',
        dataType: "text",
        data: {itemText: boxText },
        traditional: true,
        success: function (data) {
            console.log(data);
        },
        error: console.log("it did not work"),
    });