C# 在MVC4中更改REST方法响应XML节点名称

C# 在MVC4中更改REST方法响应XML节点名称,c#,rest,xml-serialization,asp.net-mvc-4,C#,Rest,Xml Serialization,Asp.net Mvc 4,我们正在使用MVC4和添加的方法构建REST服务,如: public IEnumerable<Contact> GetAllContacts() { return repository.GetAll(); } 此方法的XML响应生成为: <ArrayOfContact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/20

我们正在使用MVC4和添加的方法构建REST服务,如:

    public IEnumerable<Contact> GetAllContacts()
    {
        return repository.GetAll();
    }
此方法的XML响应生成为:

<ArrayOfContact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Contact>
    <Id>1</Id>
    <Name>Alice</Name>
    <Email>alice@example.com</Email>
  </Contact>
  <Contact>
    <Id>2</Id>
    <Name>Bob</Name>
    <Email>bob@example.com</Email>
  </Contact>
  <Contact>
    <Id>3</Id>
    <Name>Charles</Name>
    <Email>charles@example.com</Email>
  </Contact>
</ArrayOfContact>
我想把标签改成。 我知道如果它是一个类的属性,那么我们可以向属性添加属性来更改它


但是有可能更改响应的根节点吗?

通过创建classe Contacts很容易修复它

[DataContract(Namespace = "a namespace",Name="Contacts")]
public class Contacts
{
    private List<Contact> contacts= null;
    [DataMember]
    public List<Contact> Contacts
    {
        get
        {
            if (contacts == null)
            {
                contacts = new List<Contact>();
            }
            return contacts;
        }
        set
        {
            contacts= value;
        }
    }
}

然后,您将得到一个带有所需标题的XML。

它将生成类似于。。。这不是正确的响应。如果在contact类的顶部添加[DataContractNamespace=a namespace,Name=Contacts]?会有帮助吗?没有创建一个新类