Изменить имя узла XML ответа метода REST в MVC 4 - PullRequest
0 голосов
/ 29 февраля 2012

Мы создаем REST-сервис с использованием MVC4 и добавляем метод, такой как:

    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>

Я хотел бы изменить тег на . Я знаю, будет ли это свойство класса, тогда мы могли бы добавить атрибуты к свойству, чтобы изменить его.

Но возможно ли изменить корневой узел ответа?

1 Ответ

0 голосов
/ 29 февраля 2012

Это легко исправить с помощью создания класса контактов.

[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 с требуемым заголовком.

...