2013-03-07 2 views
-4

Я новичок в ASP.NET MVC. Мне нужно построить составную ViewModel из трех вложенных друг в друга или каскадные классов: Спорт> Турнир> 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> 

Мне нужно построить составную ViewModel, используя LINQ, чтобы перейти на мой взгляд, но я просто не могу понять это. Пожалуйста, помогите

ответ

0

Вам не нужна модель родительского vie, которая содержит список Sport?

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

я могу загрузить класс Sport в поле зрения, но как я могу загрузить классы турниров и TournamentEvent? – Stephen

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); 
} 
Смежные вопросы