asp.net - 通过 ajax 将 jquery 中的数组传递给 C# webmethod

标签 asp.net jquery

我想将数组传递给 C# Webmethod,但没有很好的示例可以遵循。感谢您的帮助。

这是我到目前为止所拥有的:

我的数组:

$(".jobRole").each(function (index) {

    var jobRoleIndex = index;
    var jobRoleID = $(this).attr('id');
    var jobRoleName = $(this).text();

    var roleInfo = {
        "roleIndex": jobRoleIndex,
        "roleID": jobRoleID,
        "roleName": jobRoleName
    };

    queryStr = { "roleInfo": roleInfo };
    jobRoleArray.push(queryStr);

});

我的ajax代码

  $.ajax({
            type: "POST",
            url: "WebPage.aspx/save_Role",
            data: jobRoleArray,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: false,
            success: function (data) {
                alert("successfully posted data");
            },
            error: function (data) {
                alert("failed posted data");
                alert(postData);
            }

        });

不确定网络方法,但这是我的想法:

[WebMethod]
    public static bool save_Role(String jobRoleArray[])

最佳答案

您将传递一个数组:

[
    "roleInfo": { 
              "roleIndex": jobRoleIndex, 
               "roleID": jobRoleID, 
               "roleName": jobRoleName 
     },
     "roleInfo": { 
              "roleIndex": jobRoleIndex, 
               "roleID": jobRoleID, 
               "roleName": jobRoleName 
     }, ...
]

在我看来,如果你有一个与该结构匹配的类,会更容易,如下所示:

public class roleInfo
{
     public int roleIndex{get;set;}    
     public int roleID{get;set;}
     public string roleName{get;set;}
}

这样当您从 jQuery 调用 Web 方法时,您可以这样做:

 $.ajax({
            type: "POST",
            url: "WebPage.aspx/save_Role",
            data: "{'jobRoleArray':"+JSON.stringify(jobRoleArray)+"}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: false,
            success: function (data) {
                alert("successfully posted data");
            },
            error: function (data) {
                alert("failed posted data");
                alert(postData);
            }

        });

在您的网络方法中,您可以收到 List<roleInfo>这样:

[WebMethod]
public static bool save_Role(List<roleInfo> jobRoleArray)
{

}

如果您尝试此操作,请告诉我。上面的代码没有以任何方式进行测试,因此可能会有错误,但我认为这是一个很好且非常干净的方法。

关于asp.net - 通过 ajax 将 jquery 中的数组传递给 C# webmethod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7509485/

相关文章:

asp.net - 主题对比。老派样式表

javascript - 使文本框始终使用下划线仅用输入字符覆盖

javascript - 如何使用 jQuery 跟踪文本框中的更改

javascript - jQuery Mobile 复选框控制组间距

javascript - 带有 Bootstrap 行的 jQuery UI 可排序占位符

javascript - inArray, 二维数组中的indexOf

javascript - 从 javascript 调用 button.click() 事件不会触发

c# - 显式释放内存

javascript - 未捕获类型错误 : undefined is not a function when using require. js

javascript - 如何在模态内的 HTML 5 Video 元素中定位自动播放属性