C# 在MVC4中更改REST方法响应XML节点名称
我们正在使用MVC4和添加的方法构建REST服务,如: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
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]?会有帮助吗?没有创建一个新类