2017-02-16 2 views
0

Я хочу получить список предметов из модели для просмотра, но я не получаю Точную идею этого Пожалуйста, помогите мне Я добавляю все мое классMVC Как передать список объектов в Model и Bind In View Cshtml

Ниже

public class DivisionDTO 
    { 
     public Guid Id { get; set; } 
     public string Name { get; set; } 
     public List<GroupDTO> Groups { get; set; } 
    } 
    public class GroupDTO 
    { 
     public Guid Id { get; set; } 
     public string Name { get; set; } 
     public List<Team> Teams { get; set; } 
    } 
public class Team 
    { 
     public int ID { get; set; } 
     public string TeamName { get; set; } 
     public int GroupId { get; set; } 
     public int DivisionId { get; set; } 
     public string pld { get; set; } 
     public string W { get; set; } 
     public string D { get; set; } 
     public string L { get; set; } 
     public string GF { get; set; } 
     public string GA { get; set; } 
     public string GD { get; set; } 
     public string Pts { get; set; } 
    } 

сама модель представляет собой список элементов, и каждый содержит элементы списка дочерних элементов, а также. значений списка GroupDTO DivisionDTO класса есть и в GroupDTO значение класса команды есть

Мой контроллер Код следующие

public ActionResult EditGroup() 
    { 
     CreatingLeague.Models.DivisionDTO division = new CreatingLeague.Models.DivisionDTO(); 
     division.Id = new Guid(); 
     division.Name = "Div"; 
     division.Groups = new List<CreatingLeague.Models.GroupDTO>(); 

     CreatingLeague.Models.Team team = new Models.Team(); 
     team.TeamName = "TeamA"; 
     division.Groups.Add(new CreatingLeague.Models.GroupDTO() { Id = new Guid(), Name = "G1", Teams = new List<Team>() { team } }); 
     return View(division); 
    } 

Я хочу сделать страницу редактирования может любой дать мне представление о том, что

ответ

2

Вы можете перебирать отдельные группы в режиме просмотра бритвы.

@model DivisionDTO 

@for (var i = 0; i < Model.Groups.Count(); i++) { 

    @Html.EditorFor(m => m.Groups[i].Name) 

    @for (var j = 0; j < Model.Groups[i].Teams.Count(); j++) { 
     @Html.EditorFor(m => m.Groups[i].Teams[j].TeamName) 
    } 
} 

Не используйте foreach, поскольку индексы i, j необходимы в ModelBinder MVC.

Ваше действие POST может принимать DivisonDto в качестве модели, у дочерних коллекций будут данные.

[HttpPost] 
public ActionResult Save(DivisonDto model) { 
    var firstGroupName = model.Groups[0].Name; 
    // ... 
} 

См Model Binding to a List MVC 4