加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 将带有字符串的json数组发布到Asp.Net MVC动作控

发布时间:2020-12-16 06:27:38 所属栏目:asp.Net 来源:网络整理
导读:我不能让Asp.Net MVC绑定作为json对象发送的字符串列表,除非我将它们包装在一个类中.我很难相信包装这样的列表是必须的.一直在看各种例子,什么不是几个小时,但无法得到任何其他解决方案.我错过了什么?下面的工作和非工作代码. $.ajax({ type: "POST",tradit
我不能让Asp.Net MVC绑定作为json对象发送的字符串列表,除非我将它们包装在一个类中.我很难相信包装这样的列表是必须的.一直在看各种例子,什么不是几个小时,但无法得到任何其他解决方案.我错过了什么?下面的工作和非工作代码.

$.ajax({
        type: "POST",traditional: true,url: "keyapi/activate.json",data: JSON.stringify({ "keys": [ "1","2" ] }),contentType: "application/json; charset=utf-8",success: function (data) {
            alert(data);
    }
});

当使用动作控制器(例如下面的“键”)时,它将为空.

[HttpPost]
public Response<List<string>> ActivateKeys(List<string> keys)
{
    return KeyService.ActivateKeys(test.Keys);
}

如果我添加一个类来包装列表它的工作原理.我被迫这样做了,还是我在这里遗漏了什么?下面的代码使用相同的jquery邮政编码.

[HttpPost]
public Response<List<string>> ActivateKeys(Test test)
{
    return KeyService.ActivateKeys(test.Keys);
}
public class Test
{
    List<string> Keys { get; set; }
}

解决方法

我建议两件事

1)更换

data: JSON.stringify({ "keys": [ "1",

通过

data: JSON.stringify([ "1","2" ] ),// <-- Send the array directly

这样做你将传递一个数组作为参数而不是一个包含名为keys的数组的对象

2)如果以前的建议不起作用,请更换

ActivateKeys(List<string> keys)

通过

ActivateKeys(IList<string> keys) // <-- Use interface IList<T>

因为不是100%确定mvc引擎是否能够解析为List< string>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读