MVC如何在Model和Bind In View Cshtml中传递对象列表

时间:2017-02-16 12:56:26

标签: sql-server asp.net-mvc entity-framework c#-4.0

我想从Model中查看项目列表,但我没有得到Exact Idea of​​ That 请帮我 我正在添加我的所有课程

下面

    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; }
    }

模型本身是一个项目列表,每个项目也包含子项目列表。 在DivisionDTO类列表中,GroupDTO值存在,而在GroupDTO类中,Team值是

我的控制器代码正在关注

 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);
    }

我想制作一个编辑页面,任何人都可以告诉我

1 个答案:

答案 0 :(得分: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,因为MVC模型绑定器需要索引ij

您的POST操作可以将DivisonDto作为模型,子集合将具有数据。

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

请参阅Model Binding to a List MVC 4