首页 > 解决方案 > XML 到 C# 列表到 AspNet MVC 索引

问题描述

我必须显示具有多个记录的AvailabilityOutbound 和AvailabilityReturn 列表,即asp.net mvc 索引页面中每个记录的AvailabilityFlight。模型类和控制器方法的结构如下。我不知道下一步如何进行。下面的类是通过来自 SOAP asmx 服务的 XML 响应生成的,然后映射到 C# 类。

[XmlRoot(ElementName = "AvailabilityOutbound")]
public class AvailabilityOutbound
{
    [XmlElement(ElementName = "AvailabilityFlight")]
    public List<AvailabilityFlight> AvailabilityFlight { get; set; }
}

[XmlRoot(ElementName = "AvailabilityReturn")]
public class AvailabilityReturn
{
    [XmlElement(ElementName = "AvailabilityFlight")]
    public List<AvailabilityFlight> AvailabilityFlight { get; set; }
}

[XmlRoot(ElementName = "Availability")]
public class Availability
{
    [XmlElement(ElementName = "AvailabilityOutbound")]
    public AvailabilityOutbound AvailabilityOutbound { get; set; }

    [XmlElement(ElementName = "AvailabilityReturn")]
    public AvailabilityReturn AvailabilityReturn { get; set; }
}

[XmlRoot(ElementName = "AvailabilityFlight")]
public class AvailabilityFlight
{
    [XmlElement(ElementName = "airline_rcd")]
    public string Airline_rcd { get; set; }
    [XmlElement(ElementName = "flight_number")]
    public string Flight_number { get; set; }
    [XmlElement(ElementName = "booking_class_rcd")]
    public string Booking_class_rcd { get; set; }
    [XmlElement(ElementName = "boarding_class_rcd")]
    public string Boarding_class_rcd { get; set; }
}

需要显示数据的控制器方法是:

public ActionResult Index(string xmlResult)
{
    var ser = new XmlSerializer(typeof(Availability));
    using (var sr = new StringReader(xmlResult))
    {
        var obj = (Availability)ser.Deserialize(sr);
        return //
    }
    //no idea how can i map the records to view
    return View();

}

并认为:

@model IEnumerable<Project.Models.AvailabilityFlight>

我需要关于传递列表以查看和在索引视图中显示记录的指导,其中包含用于视图和索引方法的一些示例代码片段。

标签: c#asp.netxmlasp.net-mvclist

解决方案


首先,您必须返回Availability 才能查看

  public ActionResult Index(string xmlResult)
  {
      var ser = new XmlSerializer(typeof(Availability));
      using (var sr = new StringReader(xmlResult))
      {
           var obj = (Availability)ser.Deserialize(sr);
           return View(obj);
      }
  }

鉴于:

@model Project.Models.Availability

@foreach (var item in Model.AvailabilityOutbound.AvailabilityFlight )  
{
  ...  // each item of AvailabilityFlight in AvailabilityOutbound
}

@foreach (var item in Model.AvailabilityReturn.AvailabilityFlight )  
{
  ...  // each item of AvailabilityFlight in AvailabilityReturn 
}

推荐阅读