微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

传递大量参数ajax、asp.net

如何解决传递大量参数ajax、asp.net

我想通过ajax函数传递一些参数。我能够传递字符串列表或 2 个参数(int 类型)。我在传递列表和 int 参数时遇到问题。最终,可能会有比两个更多的参数。

我的例子:

.cs 文件

public string AddListElement(int secId,List<string> fieldsList)
{
//code...
return "a";
}

.cshtml 文件

<script>
    function AddElement(idSection) { 
        var stringArray = new Array();
        stringArray[0] = "item1";
        stringArray[1] = "item2";
        stringArray[2] = "item3";
        $.ajax({
            type: "POST",url: "/BK/User/AddListElement",data: {
                secId: idSection,fieldsList: stringArray,},dataType: "json",Traditional: true,}).fail(function () {
            //code...
        }).done(function (data) {
            //code...
        });
    }
</script>

//other code...

<div class="form-group main-center2 col-8 mt-2">
    <a class="btn btn-success btn btn-block" onclick="AddElement(@Model.Section[i].Id);" href="#">
        Dodaj
    </a>
</div>

在这种情况下,idSec 已通过,但列表为空。通过在 Url 中传递 idSec 和这样的列表,我能够很好地传递它。但在我看来这不是最好的解决方案,特别是如果我想要更多参数,例如2 个列表和 3 个 int 参数。

如何像这样传递多个参数?假设参数不同:int、string、list。 我读过类似的主题,但对我不起作用。

附注。

解决方法

从 body 接收 JSON 内容的最佳方式是根据 JSON 的属性定义一个模型,像你的情况一样,你可以这样定义:

1.1.0

和控制器:

1.2.0

但是如果你不想定义额外的模型,你可以使用一个 public class ReceiveData { public int secId { get; set; } public List <string > fieldsList { get; set; } } 来保存你想从 POST 接收的所有数据:

public string AddListElement(ReceiveData data)
{
//code...
return "a";
}

每个动作只能从主体绑定一个参数

,

控制器方法将单个参数映射到请求正文;您可以使用 nativeQuery = true(一个参数属性)来指定哪个 (see here):

当参数具有 [FromBody] 时,Web API 使用 Content-Type 标头来选择格式化程序。在此示例中,内容类型为“application/json”,请求正文为原始 JSON 字符串(不是 JSON 对象)。

最多允许从消息正文中读取一个参数。所以这行不通:

[FromBody]

在您的情况下,创建一个 DTO 来模拟您发送的 JSON 对象:

// Caution: Will not work!    
public HttpResponseMessage Post([FromBody] int id,[FromBody] string name) { ... }

旁注:您需要将请求中的 class ListElementDto { public int SecId { get; set; } public List<string> FieldsList { get; set; } } public string AddListElement([FromBody] ListElementDto model) { //code... return "a"; } 标头设置为 Content-Type,并且我还建议在您的 {{ 1}}。 Ajax "application/json" 用于告诉 ajax 期望什么作为服务器响应。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。