WebAPI XML格式化程序不返回所有字段

时间:2015-01-24 17:20:11

标签: c# asp.net-web-api

我正在使用WebApi2返回没有命名空间的XML 我想删除i:下面。

<PersonDetails 
    xmlns:i="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://schemas.datacontract.org/2004/07/FullJqueryForm.DTO">
    <FirstName i:nil="true" />
    <ID>0</ID>
    <LastName i:nil="true" />
    <MiddleName i:nil="true" />
    <Title i:nil="true" />
</PersonDetails>

使用此so question,方法2

Added this to WebApiConfig.cs

config.Formatters.XmlFormatter.UseXmlSerializer = true;

麻烦的是,当我从控制器返回new PersonDetails()时,JSON返回正常。但是,如果我设置

Accept application/xml

标题然后发送一个get请求我只返回ID字段。然而,Json会返回所有字段。

public class PersonDetails
    {

        public int ID { get; set; }
        public string Title { get; set; }
        public string FirstName { get; set; }
        public string MiddleName { get; set; }
        public string LastName { get; set; }
   }

XML

<PersonDetails 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <ID>0</ID> <!-- YO WebApi!! ... Where the rest of the fields at?? -->
</PersonDetails>

的Json

{
    "ID": 0,
    "Title": null,
    "FirstName": null,
    "MiddleName": null,
    "LastName": null
}

现在

我尝试在PersonDetails类上设置Serializable属性,但是没有用。

我宁愿不使用DataContract属性来删除名称空间,因为我必须在任何地方放置大量的DataMember属性。

我想我在这里错过了一些简单的东西。为什么xml格式化程序不返回所有字段?

谢谢

1 个答案:

答案 0 :(得分:0)

您需要修饰这些属性并将XmlElement.IsNullable设置为true

[XmlElement(IsNullable = true)]
public string Title { get; set; }