2013-03-07 95 views
-4

我是ASP.NET MVC的新手。我需要建立一个复合视图模型出三个嵌套或级联类:体育>锦标赛> TournamentEventMVC 4:构建复合视图模型

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

难道你不需要一个包含运动列表的父vie模型吗?

public class Sport 
{ 
    public List<Sport> Sports { get; set; } 
} 

您可以使用剃刀迭代集合。

你能澄清一下你认为linq的意义吗?我可能得到了棒的错误结局。

0

我不认为这是有效的,汤姆。我需要访问锦标赛和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); 
    } 
} 
+0

我可以在体育类加载到查看,但我怎么加载锦标赛和TournamentEvent类? – Stephen 2013-03-08 06:36:56

0

创建一个类调用它使用SportTournamentEventViewModel.cs

“库名称” .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); 
}