为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
智慧大石 2021-03-30 13:10:03
问题:我正在尝试通过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核心项目,我还需要在某个地方更改其他参数吗?
查看完整描述

4 回答

?
白衣非少年

TA贡献1155条经验 获得超0个赞

由于我认为已接受的答案不正确-这是替代方法(与此处其他答案类似,但不相同)。首先,您需要使用FromBody属性装饰模型:


public async Task<IActionResult> FilteredKeys([FromBody] MySearch filter)

{

    var data = await _service.GetFilteredKeyTypes(filter);

    return View();

}

而ajax调用应如下所示:


var array = [];

array.push("test")

array.push("test2")

array.push("test3")

 $.ajax({

    type: "POST",

    url: "Admin/FilteredKeys",

    data: JSON.stringify({ Ids: array, OnlyActive: true}),

    contentType: "application/json; charset=utf-8",

    success: function(data){

        // ...

    },

    failure: function(errMsg) {

        // ...

    }

});


查看完整回答
反对 回复 2021-04-10
?
catspeake

TA贡献1111条经验 获得超0个赞

这个答案是为了替代(如果有人会喜欢此解决方案):

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


查看完整回答
反对 回复 2021-04-10
?
达令说

TA贡献1821条经验 获得超6个赞

为什么不这样:

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


查看完整回答
反对 回复 2021-04-10
?
慕姐8265434

TA贡献1813条经验 获得超2个赞

太确定控制器会尝试从主体中解析模型,您可以添加FromBody属性:


public async Task<IActionResult> FilteredKeys([FromBody] MySearch filter)

{

...

}

另外,您还应该在请求中添加application / json内容类型:


$.ajax({

    type: "POST",

    url: ...,

    data: ...,

    success: ...

    contentType: "application/json"

});


查看完整回答
反对 回复 2021-04-10
  • 4 回答
  • 0 关注
  • 194 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信