1

I have to display the list of AvailabilityOutbound and AvailabilityReturn having multiple records i.e AvailabilityFlight of each in index page of asp.net mvc. The structure for the model classes and controller method is below. I didn't get any idea how to proceed next. The below class is generated via XML response from SOAP asmx service and then mapped to C# Classes.

[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; }
}

The controller method where data need to be displayed is:

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();

}

and the view as:

@model IEnumerable<Project.Models.AvailabilityFlight>

I need guidance on passing the list to view and displaying the records in index view with few sample code snippets for view and index method.

2
  • Do you want to get each item of AvailabilityFlight in AvailabilityOutbound or AvailabilityReturnin in Availability in view? Commented Sep 30, 2018 at 13:03
  • @Hossein I am getting the values in the obj, but not able to pass in view. And I want to display the AvailabilityOutbound and AvailabilityReturn with each items i.e AvailabilityFlight in list. Sometimes AvailabilityFlight in one leg may not be available to in that case only single leg is displayed. Commented Sep 30, 2018 at 13:05

2 Answers 2

1

First of all, You must return Availability to view

  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);
      }
  }

In view :

@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 
}
Sign up to request clarification or add additional context in comments.

Comments

0

I would create a dataset and the display using similar code to following posting :

Display DataTable information in aspx page

The code to put data into a dataset would look like this :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Xml;
using System.Xml.Serialization;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            DataSet ds = new DataSet("Availability");
            DataTable dtFlight = new DataTable("Flight");
            ds.Tables.Add(dtFlight);

            dtFlight.Columns.Add("Airline RCD",typeof(string));
            dtFlight.Columns.Add("Flight Number",typeof(string));
            dtFlight.Columns.Add("Booking Class",typeof(string));
            dtFlight.Columns.Add("Boarding Class",typeof(string));

            DataTable dtReturn = new DataTable("Return");
            ds.Tables.Add(dtReturn);

            dtReturn.Columns.Add("Airline RCD", typeof(string));
            dtReturn.Columns.Add("Flight Number", typeof(string));
            dtReturn.Columns.Add("Booking Class", typeof(string));
            dtReturn.Columns.Add("Boarding Class", typeof(string));


            string xml = "put your sting here";
            Availability availability = DeSerialize<Availability>.Index(xml);

            foreach (AvailabilityFlight flight in availability.AvailabilityOutbound.AvailabilityFlight)
            {
                dtFlight.Rows.Add(new object[] { flight.Airline_rcd, flight.Flight_number, flight.Booking_class_rcd, flight.Boarding_class_rcd });
            }

            foreach (AvailabilityFlight flight in availability.AvailabilityReturn.AvailabilityFlight)
            {
                dtReturn.Rows.Add(new object[] { flight.Airline_rcd, flight.Flight_number, flight.Booking_class_rcd, flight.Boarding_class_rcd });
            }
        }


    }
    public class DeSerialize<T>
    {
        public static T Index(string xmlResult)
        {
            var ser = new XmlSerializer(typeof(T));
            using (var sr = new StringReader(xmlResult))
            {
                 return (T)ser.Deserialize(sr);
            }
        }

    }
    [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; }
    }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.