Skip to main content
 首页 » 编程设计

c#之如何将对象数组传递为 jQuery Ajax 可以理解的格式

2024年01月01日44bonelee

我有一个具有以下功能的 asmx 网络服务:

    [WebMethod] 
    public List<Tag> GetTags() 
    { 
        List<Tag> TagList = new List<Tag>(); 
 
        DataTable dt = Helpers.Tags.GetTags(); 
 
        foreach (DataRow dr in dt.Rows) 
        { 
            Tag t = new Tag(); 
            t.TagName = dr["Tag"].ToString(); 
            t.TagDescription = dr["Description"].ToString(); 
            TagList.Add(t); 
        } 
 
        return TagList; 
    } 

这是标记类:

    public class Tag 
    { 
        public string TagName { get; set; } 
        public string TagDescription { get; set; } 
    } 

GetTags() 方法返回标签对象的对象列表。

我在 jQuery 中有一个自动完成函数,它接受以下格式的数组:

    var availableTagsCustom = [ 
        { 
            tagName: 'Ruby', 
            tagDescription: 'Ruby is an open-source dynamic...' 
        }, 
        { 
            tagName: 'Scala', 
            tagDescription: 'Scala is a general purpose programming language...' 
        }, 
        { 
            tagName: 'Scheme', 
            tagDescription: 'Scheme is a functional programming language....' 
        } 
    ]; 

如何将我收到的“标记对象的对象列表”翻译或转换成这种格式?

谢谢。

请您参考如下方法:

首先您需要在服务类级别设置[System.Web.Script.Services.ScriptService] 属性以获取Json 结果。

其次,您需要在方法上应用 [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]。

[WebMethod] 
[ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] 
public List<Tag> GetTags() 
{ 
    List<Tag> TagList = new List<Tag>(); 
 
    DataTable dt = Helpers.Tags.GetTags(); 
 
    foreach (DataRow dr in dt.Rows) 
    { 
        Tag t = new Tag(); 
        t.TagName = dr["Tag"].ToString(); 
        t.TagDescription = dr["Description"].ToString(); 
        TagList.Add(t); 
    } 
 
    return TagList; 
} 

请求中的第三个Content-type: application/json。

This article also might be helpful "using jquery to consume aspnet json web-services