XML到C#列表到AspNet MVC索引
我必须在asp.net mvc的索引页中显示Availability Outbound和Availability Return的列表,其中包含多个记录,即每个记录的Availability Flight。 模型类和控制器方法的结构如下所示。 我不知道下一步该怎么做。 下面的类是通过SOAP asmx服务的XML响应生成的,然后映射到C#类 意见如下:XML到C#列表到AspNet MVC索引,c#,asp.net,xml,asp.net-mvc,list,C#,Asp.net,Xml,Asp.net Mvc,List,我必须在asp.net mvc的索引页中显示Availability Outbound和Availability Return的列表,其中包含多个记录,即每个记录的Availability Flight。 模型类和控制器方法的结构如下所示。 我不知道下一步该怎么做。 下面的类是通过SOAP asmx服务的XML响应生成的,然后映射到C#类 意见如下: @model IEnumerable<Project.Models.AvailabilityFlight> @model IEnum
@model IEnumerable<Project.Models.AvailabilityFlight>
@model IEnumerable
我需要有关传递列表以在“索引”视图中查看和显示记录的指导,其中包含一些用于查看和索引方法的示例代码片段。首先,您必须将可用性返回到“查看”
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
}
我将使用与以下帖子类似的代码创建数据集和显示: 将数据放入数据集中的代码如下所示:
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; }
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用系统数据;
使用System.Xml;
使用System.Xml.Serialization;
使用System.IO;
命名空间控制台应用程序1
{
班级计划
{
静态void Main(字符串[]参数)
{
数据集ds=新数据集(“可用性”);
数据表dtFlight=新数据表(“航班”);
ds.Tables.Add(dtFlight);
添加(“航空公司RCD”,类型(字符串));
dtFlight.Columns.Add(“航班号”,类型(字符串));
dtFlight.Columns.Add(“预订类”,typeof(字符串));
dtFlight.Columns.Add(“登机等级”,类型(字符串));
DataTable dtReturn=新数据表(“返回”);
ds.Tables.Add(dtReturn);
dtReturn.Columns.Add(“Airline RCD”,typeof(string));
dtReturn.Columns.Add(“航班号”,类型(字符串));
dtReturn.Columns.Add(“预订类”,typeof(string));
dtReturn.Columns.Add(“登机等级”,typeof(string));
string xml=“把你的刺放在这里”;
可用性=反序列化.Index(xml);
foreach(AvailabilityFlight航班在availability.AvailabilityOutbound.AvailabilityFlight中)
{
dtFlight.Rows.Add(新对象[]{flight.Airline\u rcd,flight.flight\u number,flight.Booking\u class\u rcd,flight.Boarding\u class\u rcd});
}
foreach(AvailabilityFlight航班在availability.AvailabilityReturn.AvailabilityFlight中)
{
dtReturn.Rows.Add(新对象[]{flight.Airline\u rcd,flight.flight\u number,flight.Booking\u class\u rcd,flight.Boarding\u class\u rcd});
}
}
}
公共类反序列化
{
公共静态T索引(字符串xmlResult)
{
var ser=新的XmlSerializer(typeof(T));
使用(var sr=newstringreader(xmlResult))
{
返回(T)序列反序列化(sr);
}
}
}
[XmlRoot(ElementName=“AvailabilityOutbound”)]
公共类可用性出站
{
[XmlElement(ElementName=“AvailabilityFlight”)]
公共列表可用性航班{get;set;}
}
[XmlRoot(ElementName=“AvailabilityReturn”)]
公共类可用性返回
{
[XmlElement(ElementName=“AvailabilityFlight”)]
公共列表可用性航班{get;set;}
}
[XmlRoot(ElementName=“可用性”)]
公共类可用性
{
[XmlElement(ElementName=“AvailabilityOutbound”)]
公共可用性出站可用性出站{get;set;}
[XmlElement(ElementName=“AvailabilityReturn”)]
公共可用性Return可用性Return{get;set;}
}
[XmlRoot(ElementName=“AvailabilityFlight”)]
公共舱可用性航班
{
[xmlement(ElementName=“airline\u rcd”)]
公共字符串\u rcd{get;set;}
[xmlement(ElementName=“航班号”)]
公共字符串航班号{get;set;}
[XmlElement(ElementName=“预订”类别“rcd”)]
公共字符串\u类\u rcd{get;set;}
[XmlElement(ElementName=“寄宿类”rcd”)]
公共字符串\u类\u rcd{get;set;}
}
}
是否要在查看中获取可用性出站
中的可用性飞行
或可用性返回
中的可用性飞行
的每个项目?@Hossein我正在获取obj中的值,但无法在视图中传递。我想显示每个项目的AvailabilityOutbound和AvailabilityReturn,即AvailabilityFlight in列表。有时可用性一个航段中的航班可能不适用于其他航段,在这种情况下,只显示一个航段。
@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
}
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; }
}
}