视图模型 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; }
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属性。

另请注意,FlightsIEnumerable<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) 
}

最新更新