Asp.net mvc 3 如何在MVC中将数据从动作方法发送到视图?

Asp.net mvc 3 如何在MVC中将数据从动作方法发送到视图?,asp.net-mvc-3,Asp.net Mvc 3,眼前的表情 我有mvc中的型号名称飞行: public class Flight { public int id { get; set; } [Required(ErrorMessage = "name is required")] [StringLength(170)] public string name { get; set; } [Required(ErrorMessage = "flight company is required")]

眼前的表情 我有mvc中的型号名称飞行:

 public class Flight
{
    public int id { get; set; }
    [Required(ErrorMessage = "name is required")]
    [StringLength(170)]
    public string name { get; set; }
    [Required(ErrorMessage = "flight company is required")]
    [DisplayName("company Name")]
    public string flightCompany { get; set; }
    [DataType(DataType.Date)]
    public DateTime date { get; set; }
    public int idAvaribleClass { get; set; }
     [DisplayName("Duration TO")]
    public string flightDuration { get; set; }
     [DisplayName("Ariport Name")]
     [StringLength(200)]
    public string airportName { get; set; } 
    public int idRegisterFlght { get; set; }
    public List<FlightDuration> FlightDurations { get; set; }
    public List<AvalibleClass> AvalibleClasses { get; set; }
    public List<registerFlightProgram> registerFlightPrograms { get; set; }




}
公共舱航班
{
公共int id{get;set;}
[必需(ErrorMessage=“name is Required”)]
[长度(170)]
公共字符串名称{get;set;}
[必需(ErrorMessage=“需要飞行公司”)]
[显示名称(“公司名称”)]
公共字符串flightCompany{get;set;}
[数据类型(DataType.Date)]
公共日期时间日期{get;set;}
公共int idAvaribleClass{get;set;}
[显示名称(“持续时间”)]
公共字符串flightDuration{get;set;}
[显示名称(“Ariport名称”)]
[长度(200)]
公共字符串airportName{get;set;}
public int idregisterflight{get;set;}
公共列表FlightDurations{get;set;}
公共列表可用类别{get;set;}
公共列表注册表程序{get;set;}
}
我有一个操作方法,在数据库中搜索用户在视图中输入的内容,并通过查询linq返回两个表。我想在视图中显示此表:

_Mydb _db=new _Mydb()

[HttpGet]
公共行动结果索引()
{
返回视图();
}
[HttpPost]
公共操作结果索引(字符串searchTerm=null,字符串to=null)
{
变量q=
(来自c in_db.flights)
在c.id上加入p _db.Durations等于p.FlightId
其中(p.to==to)&&(p.fromStar==searchTerm)&&(to!=null)
选择新的
{
c=新航班{id=c.id,name=c.name,flightCompany=c.flightCompany,date=c.date,idAvaribleClass=c.idAvaribleClass,flightDuration=c.flightDuration,airportName=c.airportName,idregisterflight=c.idregisterflight},
p=new FlightDuration{id=p.id,fromStar=p.fromStar,to=p.to,takeOffTime=p.takeOffTime,expectedTime=p.expectedTime,priceDuration=p.priceDuration,FlightId=p.FlightId}
}).SingleOrDefault();
返回视图(q);
}
*代码视图,表达式在“@foreach”*
@模型IEnumerable
@{
ViewBag.Title=“主页”;
}
@使用(Html.BeginForm()){
**@foreach(模型中的var项目)**
{
@项目.飞行公司
}
}

你的问题是什么?无论如何,您的视图被强类型化为
@model IEnumerable
,并且您正在使用
SingileorDefault()
返回单个对象,这将不起作用。我想要返回对象:这个对象是result linq(两个表之间的联接)“Flight”和“duration”,但当我想要在Foreach的视图中读取结果时(显示Exposition)
    [HttpGet]
    public ActionResult Index()
    {

        return View();
    }

    [HttpPost]
    public ActionResult Index(string searchTerm = null, string to = null)
    {
        var q =
          (from c in _db.flights
           join p in _db.Durations on c.id equals p.FlightId
           where (p.to == to) && (p.fromStar == searchTerm) && (to != null)
           select new
           {
               c = new Flight { id = c.id, name = c.name, flightCompany = c.flightCompany, date = c.date, idAvaribleClass = c.idAvaribleClass, flightDuration = c.flightDuration, airportName = c.airportName, idRegisterFlght = c.idRegisterFlght },
               p = new FlightDuration { id = p.id, fromStar = p.fromStar, to = p.to, takeOffTime = p.takeOffTime, expectedTime = p.expectedTime, priceDuration = p.priceDuration, FlightId =p.FlightId}
           }).SingleOrDefault();

        return View(q);
    }

 *code view , expression in "@foreach"*   



 @model IEnumerable<TourismPro.Models.Flight>
@{
    ViewBag.Title = "Home Page";
}

@using (Html.BeginForm()){
<form method="post">
    <input type="search" name="searchTerm" />
     <input type="search" name="to" />
    <input type="submit" value="Search By Name" />

    **@foreach (var item in Model)**
{
    <div>
    @item.flightCompany
        </div>
}
</form>
}