WebAPI XML 格式化程序不 return 所有字段
WebAPI XML formatter doesn't return all fields
我正在使用 WebApi2 return XML 没有名称 space。 我想删除下面的 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;
麻烦的是,当我只是 return 来自控制器的 new PersonDetails()
时,JSON 是 return 的。但是如果我设置
Accept application/xml
header 然后发送一个get请求我只取回ID字段。 Json 但是 return 所有字段。
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 Class 上设置 Serializable
属性,但没用。
我不想使用 DataContract 属性删除名称 space,因为那样我就不得不在各处放置大量的 DataMember 属性。
我想我在这里遗漏了一些简单的东西。为什么 xml 格式化程序 return 不处理所有字段?
谢谢
您需要修饰这些属性并将 XmlElement.IsNullable
设置为 true
:
[XmlElement(IsNullable = true)]
public string Title { get; set; }
我正在使用 WebApi2 return XML 没有名称 space。 我想删除下面的 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;
麻烦的是,当我只是 return 来自控制器的 new PersonDetails()
时,JSON 是 return 的。但是如果我设置
Accept application/xml
header 然后发送一个get请求我只取回ID字段。 Json 但是 return 所有字段。
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 Class 上设置 Serializable
属性,但没用。
我不想使用 DataContract 属性删除名称 space,因为那样我就不得不在各处放置大量的 DataMember 属性。
我想我在这里遗漏了一些简单的东西。为什么 xml 格式化程序 return 不处理所有字段?
谢谢
您需要修饰这些属性并将 XmlElement.IsNullable
设置为 true
:
[XmlElement(IsNullable = true)]
public string Title { get; set; }