C# 详细视图中ASP.NET MVC中的ViewModel

C# 详细视图中ASP.NET MVC中的ViewModel,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,我有一个班名Flight。 我想将这个类(flight)与一个名为count的额外字段一起使用。 我创建了一个ViewModel,如下所示: public IEnumerable<Departure> Departures { get; set; } public IEnumerable<Destination> Destinations { get; set; } public IEnumerable<Airline> Airlines { get; set

我有一个班名
Flight
。 我想将这个类(
flight
)与一个名为
count
的额外字段一起使用。 我创建了一个
ViewModel
,如下所示:

public IEnumerable<Departure> Departures { get; set; }
public IEnumerable<Destination> Destinations { get; set; }
public IEnumerable<Airline> Airlines { get; set; }
public int count { get; set; }
public IEnumerable<Flight> Flights { get; set; }
这是我的获取方法:

public ActionResult Add(int id)
{
    var flight = db.Flights.SingleOrDefault(f => f.Id == id);

    if (flight == null)
    {
        return HttpNotFound();
    }

    var viewModel = new BuyViewModel
    {
        Flights = db.Flights.ToList(),
    };

    return View(viewModel);
}
我得到了一个错误:


“BuyViewModel”不包含“flight”和“no”的定义 扩展方法“flight”接受类型为的第一个参数 找不到“BuyViewModel”(您是否缺少using指令或 装配参考?)


首先,您的
ViewModel
没有名为
flight
的属性,它是
Flights
,其次,您不应该在lambda表达式中使用
Model
作为参数,因为它隐藏了页面的
Model
属性

另外请注意,
Flights
的类型为
IEnumerable
,因此您无法访问
execution
属性。您应该将
航班的类型更改为
航班
,然后:

@Html.DisplayFor(m => m.Flights.Departure.Name)
或者,如果您仍然希望它是
IEnumerable
,则可以执行以下操作:

@Html.DisplayFor(m => m.Flights.Select(c => c.Departure).FirstOrDefault().Name)
或迭代
航班

@foreach (var flight in Model.Flights) 
{
     @Html.DisplayFor(m => flight.Departure.Name) 
}

首先,您的
ViewModel
没有名为
flight
的属性,它是
Flights
,其次,您不应该在lambda表达式中使用
Model
作为参数,因为它隐藏了页面的
Model
属性

另外请注意,
Flights
的类型为
IEnumerable
,因此您无法访问
execution
属性。您应该将
航班的类型更改为
航班
,然后:

@Html.DisplayFor(m => m.Flights.Departure.Name)
或者,如果您仍然希望它是
IEnumerable
,则可以执行以下操作:

@Html.DisplayFor(m => m.Flights.Select(c => c.Departure).FirstOrDefault().Name)
或迭代
航班

@foreach (var flight in Model.Flights) 
{
     @Html.DisplayFor(m => flight.Departure.Name) 
}

我犯了个错误。错误消息是什么?如果你可以粘贴错误消息,有人可以帮你解决这个问题。如果没有这一点,“BuyViewModel”似乎几乎不可能包含“flight”的定义,并且找不到接受“BuyViewModel”类型的第一个参数的扩展方法“flight”(是否缺少using指令或程序集引用?)它不是
flight
而是
Flights
。如何在视图中使用我的viewmodel?我遇到了错误。错误消息是什么?如果你可以粘贴错误消息,有人可以帮你解决这个问题。如果没有这一点,“BuyViewModel”似乎几乎不可能包含“flight”的定义,并且找不到接受“BuyViewModel”类型的第一个参数的扩展方法“flight”(是否缺少using指令或程序集引用?)它不是
flight
而是
Flights
。如何在视图中使用我的viewmodel?@leman17您仍然收到相同的错误吗?或者不同的错误?'IEnumerable'不包含'execution'的定义,并且找不到接受类型为'IEnumerable'的第一个参数的扩展方法'execution'(是否缺少using指令或程序集引用?)@leman17您是否仍然收到相同的错误?或其他错误?“IEnumerable”不包含“execast”的定义,并且找不到接受类型为“IEnumerable”的第一个参数的扩展方法“execast”(是否缺少using指令或程序集引用?)