2017-07-24 59 views
3

我使用此貢獻來根據「Accept」標頭返回json或xml。MVC .net核心:響應類型總是json不是xml和ICollection

https://docs.microsoft.com/en-us/aspnet/core/mvc/models/formatting

services.AddMvc(options => 
{ 
    options.RespectBrowserAcceptHeader = true; 
    options.OutputFormatters.Add(new XmlSerializerOutputFormatter()); 
}); 

我的目標

public partial class Cartes 
{ 
    public Cartes() 
    { 

    } 

    public string CartNumero { get; set; } 
    public int? CartConsId { get; set; } 
    public int CartLotcaId { get; set; } 
    public int CartTypcaId { get; set; } 
    public string CartCrc { get; set; } 
    public DateTime? CartDateAttribution { get; set; } 
    public DateTime? CartDateClotureCarte { get; set; } 
    public DateTime? CartDateSaisie { get; set; } 
} 

它的工作!

但是,當我將ICollection屬性添加到Cartes時,返回總是在JSON中!

public virtual ICollection<UtilisationsCriteres> UtilisationsCriteres { get; set; } 

UtilisationsCriteres類:

public partial class UtilisationsCriteres 
{ 
    public int UtcriConsId { get; set; } 
    public int UtcriCrsupId { get; set; } 
    public string UtcriValeur { get; set; } 
    public int UtcriPartclieId { get; set; } 
    public DateTime UtcriDateInsert { get; set; } 
    public DateTime UtcriDateUpdate { get; set; } 
    public string UtcriUserUpdate { get; set; } 
} 

控制器的返回類型是IActionResult。

任何想法爲什麼?

回答

1

我可以證實(奇怪)的行爲。該集合可以爲空(或空),內容從application/xml更改爲application/json

使用接口而不是具體類型時,XML序列化器似乎會丟失。也許你應該在https://github.com/aspnet/Mvc/issues上創建一個新問題。

解決方法是使用具體的類。更改ICollection<UtilisationsCriteres>System.Collections.ObjectModel.Collection<UtilisationsCriteres>List<UtilisationsCriteres>似乎工作。

+1

感謝它的工作! 我可能會在github上添加一個問題;) –

相關問題