【问题标题】:How to remove the collection attribute in asp.net core MVC xml formatter [duplicate]如何删除asp.net核心MVC xml格式化程序中的集合属性[重复]
【发布时间】:2021-01-30 07:58:57
【问题描述】:

在 .NET 5 中,我使用 OWIN 设置了一个网络服务器

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers(options =>
    {
        options.RespectBrowserAcceptHeader = true;
    }).AddXmlSerializerFormatters();
}

我有一个带有集合事件的模型 PresEvents

public class PersEvents
{
    public List<Event> Events { get; } = new List<Event>();
}

public class Event
{
    public string Sn { get; set; } = string.Empty;
    public string Loiname { get; set; } = string.Empty;
}

我有一个控制器返回这个 PersEvents 实例

[HttpGet]
public PersEvents GetEventsData()
{
    PersEvents events = new PersEvents();
    events.Events.Add(new Event { Sn = "123", Loiname = "Ohio" });
    events.Events.Add(new Event { Sn = "456", Loiname = "Ohio" });
    return events;
}

当我调用 GetEventsData 时,我可以获得如下 XML 格式的数据

<PersEvents xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Events>
        <Event>
            <Sn>123</Sn>
            <Loiname>Ohio</Loiname>
        </Event>
        <Event>
            <Sn>456</Sn>
            <Loiname>Ohio</Loiname>
        </Event>
    </Events>
</PersEvents>

问题是我不想要 Events 属性,我只想要 PresEvents 之后的所有 Event 片段,我该怎么做?

【问题讨论】:

    标签: c# xml asp.net-core-webapi owin


    【解决方案1】:

    PerseEvents设为集合类型,然后将所有继承的成员映射到this.Events

    public class PersEvents : ICollection<Event>
    {
        public List<Event> Events { get; } = new List<Event>();
        public IEnumerator GetEnumerator() => this.Events.GetEnumerator();
    }
    

    【讨论】:

    • 嗨迈克尔,当我将所有继承的成员映射到 this.Events 时,响应只是返回一个 JSON 格式的数据
    【解决方案2】:

    最后我注意到在Events属性中添加一个属性可以移除容器属性。

    [XmlElement("Event")]
    public List<Event> Events { get; set; } = new List<Event>();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-12
      • 1970-01-01
      • 2018-03-25
      • 2016-08-14
      • 1970-01-01
      相关资源
      最近更新 更多