[英]ViewModel in ASP.NET MVC in detail view
我有一個班級名稱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)
這是我的get方法:
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'的定義,找不到找不到接受'BuyViewModel'類型的第一個參數的擴展方法'flight'(您是否缺少using指令或程序集引用?)
首先,您的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)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.