簡體   English   中英

ASP.NET MVC中的ViewModel詳細視圖

[英]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屬性。 您應該改變的類型FlightsFlight ,然后:

@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM