2014-01-07 27 views
0

我使用的是Asp.net Web Api,我试图返回一个DTO对象列表。Asp.net Web API序列化列表<>

这是我有:

// Wrapper 
[DataContract(Namespace = "", Name = "get-applications-result")] 
[XmlRoot(Namespace = "", ElementName = "get-applications-result")] 
public class GetApplicationsResult : List<ApplicationDTO> 
{ 

} 

// DTO object 
[DataContract(Namespace = "", Name = "application")] 
[XmlRoot(Namespace = "", ElementName = "application")] 
public class ApplicationDTO 
{ 
    [DataMember(Name = "application-name")] 
    [XmlElement(ElementName = "application-name")] 
    public string ApplicationName { get; set; } 
} 

Global.asax我设置

GlobalConfiguration.Configuration.Formatters.XmlFormatter.UseXmlSerializer = true; 

然而,当我返回从服务器到客户端的响应,它返回它是这样的:

<get-applications-result xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <ApplicationDTO> 
     <application-name>Application name</application-name> 
    </ApplicationDTO> 
</get-applications-result> 

我怎样才能使<ApplicationDTO/>被渲染为<application/>

回答

0

尝试在ApplicationDTO类而不是XmlRootAttribute使用XmlTypeAttribute

[DataContract(Namespace = "", Name = "application")] 
[XmlType(TypeName = "application")] 
public class ApplicationDTO 
{ 
    [DataMember(Name = "application-name")] 
    [XmlElement(ElementName = "application-name")] 
    public string ApplicationName { get; set; } 
}