我尝试在我的视图信息中显示几个相关的表。我想从'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