我嘗試在我的視圖信息中顯示幾個相關的表。我想從'przymioty'數據中選擇後顯示來自'uzytkownik'的項目。 我有型號:控制器與相關數據 - 實體框架
'przedmioty' ['idPrzedmiot']
'rolaPowWykladowca' ['idRolaPowWykladowca', 'idUzytkownik', 'idPrzedmiot', (...)]
'uzytkownik' ['idUzytkownik',(...)]
我試圖做我的控制器作爲導師控制器這裏https://www.asp.net/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/reading-related-data-with-the-entity-framework-in-an-asp-net-mvc-application
我創建視圖模型:
public class PrzedmiotViewModel
{
public IEnumerable<przedmioty> Przedmioty { get; set; }
public IEnumerable<przedmiotPowWykladowca> PrzedmiotPowWykladowca { get; set; }
public IEnumerable<uzytkownik> Uzytkownik { get; set; }
}
現在我的控制器看起來像:
public ActionResult Index(int? PrzedmiotID, int? UzytkownikID, int? FormaZajecId)
{
var viewModel = new PrzedmiotViewModel();
viewModel.Przedmioty = db.przedmioty;
if (UzytkownikID != null)
{
ViewBag.idUzytkownik = UzytkownikID.Value;
viewModel.Uzytkownik = viewModel.PrzedmiotPowWykladowca
.Where(x => x.idUzytkownik == UzytkownikID).SingleOrDefault().uzytkownik;
}
return View(viewModel);
}
錯誤是:
Cannot imlicitly convert type 'Aplikacja.Models.uzytkownik' to 'System.Collections.Generic.IEnumerable<Aplikacja.Models.uzytkownik>'. An explicit conversion exist (are you missing a cast?)
我也試過這樣:
if (PrzedmiotID != null)
{
ViewBag.idPrzedmiot = PrzedmiotID.Value;
viewModel.Uzytkownik = (from p in viewModel.Przedmioty
where p.idPrzedmiot == PrzedmiotID
select new
{
przedmioty = p,
przedmiotPowWykladowca = (from pw in p.przedmiotPowWykladowca
where pw.idPrzedmiot == PrzedmiotID
select new
{
przedmiotPowWykladowca = pw,
uzytkownik = from u in pw.idUzytkownik == u.idUzytkownik
select u
})
}).Single().uzytkownik;
}
但
u (in u.idUzytkownik) does not exist in the curent context
我覺得好辦法或者我的想法是一般錯了嗎?
---編輯---
if (PrzedmiotID != null)
{
ViewBag.idPrzedmiot = PrzedmiotID.Value;
var selectedPrzedmiotPowWykladowca = viewModel.PrzedmiotPowWykladowca
.Where(x => x.idPrzedmiot == PrzedmiotID).ToList();
db.Entry(selectedPrzedmiotPowWykladowca).Collection(x => x.uzytkownik).Load();
foreach (uzytkownik uzytkownik in selectedPrzedmiotPowWykladowca.uzytkownik)
{
db.Entry(uzytkownik).Reference(x => x.rola).Load();
}
viewModel.Uzytkownik = selectedPrzedmiotPowWykladowca.uzytkownik;
}
我做了這樣的事情,但還是有一個錯誤:
Error CS1061 'List' does not contain a definition for 'uzytkownik' and no extension method 'uzytkownik' accepting a first argument of type 'List' could be found (are you missing a using directive or an assembly reference?)
- 編輯 -
if (PrzedmiotID != null)
{
ViewBag.idPrzedmiot = PrzedmiotID.Value;
var viewUzytkownik = new PrzedmiotViewModel();
viewUzytkownik.PrzedmiotPowWykladowca = db.przedmiotPowWykladowca.Where(x => x.idPrzedmiot == PrzedmiotID)
.Include(x => x.uzytkownik);
return View(viewUzytkownik);
而且這是對這部分的看法:
@foreach (var przedmioty in Model.Przedmioty)
{
@foreach (var uzytkownik in Model.Uzytkownik)
{
string selectedRow = "";
if (przedmioty.idPrzedmiot == ViewBag.idPrzedmiot)
{
selectedRow = "selectedrow";
}
<tr clss="@selectedRow">
<td>
@Html.ActionLink("Wybierz", "Index", new { idUzytkownik = uzytkownik.idUzytkownik })
</td>
<td>
@uzytkownik.imie
</td>
<td>
@uzytkownik.nazwisko
</td>
</tr>
}
}
沒有錯誤,但它不起作用 - 我的意思是在選擇'przedmioty'視圖沒有顯示來自'uzytkownik'的記錄後(我選擇idPrzedmiot後再選擇)。任何想法爲什麼它不起作用?
你的U虛擬機上的zytkownik屬性是一個集合,並且在您的控制器中,您將它設置爲SingleorDefault?那是什麼錯 – Jinish