我是ASP.NET MVC的新手。我需要从三个嵌套或级联类中构建一个复合视图模型:Sport> Tournament> TournamentEvent
public class Sport
{
public int Id { get; set; }
public string SportName { get; set; }
public virtual ICollection<Tournament> Tournaments { get; set; }
}
public class Tournament
{
public int Id { get; set; }
public string TournamentName { get; set; }
public int SportId { get; set; }
public virtual ICollection<TournamentEvent> TournamentEvents { get; set; }
}
public class TournamentEvent
{
public int Id { get; set; }
public string EventName { get; set; }
public int TournamentId { get; set; }
}
您可以收集,每项运动都包含一系列锦标赛,每场锦标赛都包含一系列赛事。我需要构建一个无序列表,如下所示:
<li> Soccer
<li>English Premier League
<li>Chelsea v Arsenal</li>
</li>
</li>
我需要使用linq构建一个复合视图模型来传递给我的视图,但我无法弄明白。请帮忙
答案 0 :(得分:0)
您是否只需要一个包含Sport列表的父vie模型?
public class Sport
{
public List<Sport> Sports { get; set; }
}
您可以使用剃刀来迭代这些集合。
你能澄清一下你认为linq进入它的位置吗?我可能有错误的结束。
答案 1 :(得分:0)
我认为这不起作用,汤姆。我需要访问Tournament和TournamentEvent类,我需要将它们加载到我的对象中,这是linq的用武之地。在SportsController中:
public partial class SportsController : Controller
{
private MyDb db = new MyDb();
public virtual ActionResult Index()
{
var menuObject = from s in db.Sports
select s;
return View(menuObject);
}
}
答案 2 :(得分:0)
创建一个类称为SportTournamentEventViewModel.cs
使用“LibraryName”.Models;
public class SportTournamentEventViewModel
{
public List<Sport> Sports {get;set;}
public List<Tournament> Tournaments {get;set;}
public List<TournamentEvent> Events {get;set;}
}
在你的行动中
private NameOfEntities db = new NameOfEntities();
public ActionResult "ActionResultName"()
{
db.Configuration.LazyLoading = false;
var sportList = db.Sport.ToList();
var tournamentList = db.Tournament.ToList();
var eventList = db.TournamentEvents.ToList();
var viewModel = new SportTournamentViewModel
{
Sports = sportList,
Tournaments = tournamentList,
Events = eventList,
};
return View(viewModel);
}