2013-03-07 130 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); 
}