c# - 遍历通过 JQUERY 作为数组传入的对象并使用 c# webmethod 获取数据

标签 c# jquery asp.net jquery-ui

全部,

我在后面的代码中访问了我的 web 方法,但是我在反序列化我的 json 数据时遇到了问题。 我没有很好的引用,但这是我想做的。我的 web 方法中的代码不允许我从我的 ajax 调用中获取数据。感谢您的帮助。

$("[id$=rdbSaveAjax1]").click(function () {

    var mappedJobRole = new Array();

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

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

        // add all the roleids and rolenames to the job role array.  
        var roleInfo = {
            "roleIndex": jobRoleIndex,
            "roleID": jobRoleID,
            "roleName": jobRoleName
        };

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

    });

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

     });

});

在我后面的代码中,我似乎无法取出数据。 我的类(class):

public class MappedRole
{

    public int Index { get; set; }
    public string RoleID { get; set; }
    public string RoleName { get; set; }

}

我的网络方法:

[WebMethod]
public static bool Save_Mapped_Role(object savedRole)
 {
   bool success = false;
   JavaScriptSerializer js = new JavaScriptSerializer();
   IList<MappedRole> role = new JavaScriptSerializer().Deserialize<IList<MappedRole>>savedRole);
   int Index = role[0].Index;
   string RoleID = role[0].RoleID;
   string RoleName = role[0].RoleName;

    return success;

  }

最佳答案

这一行好像少了一个左括号

IList<MappedRole> role = new JavaScriptSerializer().Deserialize<IList<MappedRole>>savedRole);

应该阅读

IList<MappedRole> role = new JavaScriptSerializer().Deserialize<IList<MappedRole>>(savedRole);

此外,为了使用 Deserialize 方法,您需要根据传递的 JSON 变量创建类。例如,根据您创建的 JSON 对象,您应该具有以下两个类。

SavedRole 类

public class SavedRole 
{
    public roleInfo[] { get; set; }
}

roleInfo 类

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

现在 Deserialze 方法将发挥它的魔力并为您填充对象。然后您将能够遍历该对象并对数据执行您需要的操作。

[WebMethod]
public static bool Save_Mapped_Role(object savedRole)
{
   bool success = false;
   var serializer = new JavaScriptSerializer();
   SavedRole role = serializer.Deserialize<SavedRole>(savedRole);

   //Loop through the data like so

   int roleIndex = 0;
   string roleID = null;
   string roleName = null;

   foreach (var item in role.roleInfo) {
       roleIndex =  item.roleIndex;
       roleID = item.roleID;
       roleName = item.roleName;

       //Do more logic with captured data
   }

   return success; 
}

希望对你有帮助

关于c# - 遍历通过 JQUERY 作为数组传入的对象并使用 c# webmethod 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549244/

相关文章:

javascript - 在 dom 中搜索元素最快的方法是什么?

c# - 使用 ASP MVC 将字符串从 <form> 传递到 Controller

jquery - 禁用悬停 jquery 上的点击触发器

javascript - 根据订单状态有条件地改变 rails 中的背景颜色

asp.net - 下拉列表控件显示System.Bytes[]

javascript - 单选按钮 asp.net 突出显示 div

c# - 声音未在项目构建中播放

c# - C# 中的字符串流

c# - 使用准备好的语句和占位符的 MySQL 插入命令不起作用

C#算术题