我有一个类名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; }
flights
中还有其他 3 个类。
但是我不能在我的详细视图中使用此视图模型:
<span class="glyphicon glyphicon-arrow-right"></span>
@Html.DisplayFor(Model => Model.flight.Departure.Name)
这是我的获取方法:
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"不包含"航班"的定义,也没有 扩展方法"飞行"接受类型的第一个参数 可以找到"BuyViewModel"(您是否缺少使用指令或 程序集引用?
首先,您的ViewModel
没有名为flight
的属性,它是Flights
的,其次,您不应该在 lambda 表达式中使用Model
作为参数,因为它隐藏了页面的Model
属性。
另请注意,Flights
为IEnumerable<Flight>
型,因此客人无法进入Departure
酒店。应将Flights
的类型更改为Flight
,然后:
@Html.DisplayFor(m => m.Flights.Departure.Name)
或者,如果您仍然希望它IEnumerable
那么您可以执行以下操作:
@Html.DisplayFor(m => m.Flights.Select(c => c.Departure).FirstOrDefault().Name)
或遍历Flights
:
@foreach (var flight in Model.Flights)
{
@Html.DisplayFor(m => flight.Departure.Name)
}