将字符串数组发布到.net-core mvc

问题:


我正在尝试通过jquery post发送一个字符串数组,但是它们没有被正确解析,我得到的只是列表中的null。


javascript:


var array = [];

array.push("test")

array.push("test2")

array.push("tes3")


$.post("Admin/FilteredKeys", $.param(JSON.stringify({ Ids: array, OnlyActive: true }, true)));

C#模型:


public class MySearch

{

    public bool OnlyActive { get; set; } = true;

    public List<string> Ids { get; set; }

}

控制器中的动作:


public async Task<IActionResult> FilteredKeys(MySearch filter)

{

    var data = await _service.GetFilteredKeyTypes(filter);

    return View();

}

我搜索了一下,发现传统属性需要设置为true,但它保持不变,我也尝试了以下代码段:


$.ajax({

    type: "POST",

    url: "Admin/FilteredKeys",

    data: postData,

    success: function(data){

        alert(data.Result);

    },

    dataType: "json",

    traditional: true

});

这是一个.net核心项目,我还需要在某个地方更改其他参数吗?


智慧大石
浏览 195回答 4
4回答

白衣非少年

由于我认为已接受的答案不正确-这是替代方法(与此处其他答案类似,但不相同)。首先,您需要使用FromBody属性装饰模型:public async Task<IActionResult> FilteredKeys([FromBody] MySearch filter){&nbsp; &nbsp; var data = await _service.GetFilteredKeyTypes(filter);&nbsp; &nbsp; return View();}而ajax调用应如下所示:var array = [];array.push("test")array.push("test2")array.push("test3")&nbsp;$.ajax({&nbsp; &nbsp; type: "POST",&nbsp; &nbsp; url: "Admin/FilteredKeys",&nbsp; &nbsp; data: JSON.stringify({ Ids: array, OnlyActive: true}),&nbsp; &nbsp; contentType: "application/json; charset=utf-8",&nbsp; &nbsp; success: function(data){&nbsp; &nbsp; &nbsp; &nbsp; // ...&nbsp; &nbsp; },&nbsp; &nbsp; failure: function(errMsg) {&nbsp; &nbsp; &nbsp; &nbsp; // ...&nbsp; &nbsp; }});

catspeake

这个答案是为了替代(如果有人会喜欢此解决方案):$.post("Admin/FilteredKeys",&nbsp;{&nbsp;Ids:&nbsp;array,&nbsp;OnlyActive:&nbsp;true&nbsp;});

达令说

为什么不这样:&nbsp;&nbsp;$.post("Admin/FilteredKeys",{&nbsp;Ids:&nbsp;JSON.stringify(array),&nbsp;OnlyActive:&nbsp;true&nbsp;});

慕姐8265434

太确定控制器会尝试从主体中解析模型,您可以添加FromBody属性:public async Task<IActionResult> FilteredKeys([FromBody] MySearch filter){...}另外,您还应该在请求中添加application / json内容类型:$.ajax({&nbsp; &nbsp; type: "POST",&nbsp; &nbsp; url: ...,&nbsp; &nbsp; data: ...,&nbsp; &nbsp; success: ...&nbsp; &nbsp; contentType: "application/json"});
打开App,查看更多内容
随时随地看视频慕课网APP