Asp.net mvc 使用模型和列表创建视图<;模型>;

Asp.net mvc 使用模型和列表创建视图<;模型>;,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我有一个项目模型和一个技术模型。一个项目中可以有多种技术。将有数量有限的技术对象,大约5-10个,将在无限数量的项目中使用。我曾想过将技术项保存在一个枚举中或作为常量变量,但我希望能够添加或编辑这些技术项,因此我想将它们放在一个表中 我在处理清单时往往会挂断电话。我希望能够创建单个项目,并在同一视图中选中项目中使用的技术的复选框(例如HTML5或CSS3)。我无法获得视图中显示的技术列表,以便标记为已检查特定项目 项目类别: public class Project { public i

我有一个项目模型和一个技术模型。一个项目中可以有多种技术。将有数量有限的技术对象,大约5-10个,将在无限数量的项目中使用。我曾想过将技术项保存在一个枚举中或作为常量变量,但我希望能够添加或编辑这些技术项,因此我想将它们放在一个表中

我在处理清单时往往会挂断电话。我希望能够创建单个项目,并在同一视图中选中项目中使用的技术的复选框(例如HTML5或CSS3)。我无法获得视图中显示的技术列表,以便标记为已检查特定项目

项目类别:

public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
    public List<Technology> Technologies { get; set; }        
}
public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}
public class ProjectTechnologyViewModel
{
    public IEnumerable<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects{ get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }

}
public ActionResult CreateProject()
{

    return View();
}

[HttpPost]
public ActionResult CreateProject(ProjectTechnologyViewModel viewModel)
{
    var proj = new Project();
    if (ModelState.IsValid)
    {                
        proj.LaunchDate = viewModel.Projects.LaunchDate;
        proj.ProjectType = viewModel.Projects.ProjectType;
        proj.ServiceId = viewModel.Projects.ServiceId;
        proj.ShowInOurWork = viewModel.Projects.ShowInOurWork;
        proj.Website = proj.Website;

        proj.Technologies = new List<Technology>();

        foreach (var t in viewModel.Technologies)
        {
            proj.Technologies.Add(new Technology()
            {
                Name = t.Name,
                FAClassName = t.FAClassName,
                IsActive = t.IsActive,
            });
        }

        _db.Projects.AddOrUpdate(proj);
        _db.SaveChanges();
    }

    return View(proj);
}
@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Project</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        <div class="form-group">
            @Html.LabelFor(model => model.Projects.Website, htmlAttributes: new {@class = "control-label col-md-2"})
            <div class="col-md-10">
                @Html.EditorFor(model => model.Projects.Website, new {htmlAttributes = new {@class = "form-control"}})
                @Html.ValidationMessageFor(model => model.Projects.Website, "", new {@class = "text-danger"})
            </div>
        </div>

        @for (int i = 0; i < Model.Technologies.Count(); i++)
        {
            @Html.CheckBoxFor(x=>x.Technologies[i].)
        }

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}
public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
}

public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}

public class ProjectTechnologyMap
{
    public int  Id { get; set; }
    public int ProjectId { get; set; }
    public int TechnologyId { get; set; }
}
public class ProjectTechnologyViewModel
{
    public List<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }
    public ProjectTechnologyMap ProjectTechnologyMapping { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
        ProjectTechnologyMapping = new ProjectTechnologyMap();

    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects { get; set; }
    public DbSet<ProjectTechnologyMap> ProjectTechnologyMappings { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}
public ActionResult Create()
        {
            var technologies = from t in _db.Technologies
                               orderby t.Name
                               where t.IsActive
                               select t;

            var viewModel = new ProjectTechnologyViewModel();
            viewModel.Technologies = technologies.ToList();

            return View(viewModel);
        }

        [HttpPost]
        public ActionResult Create(ProjectTechnologyViewModel viewModel)
        {            
            if (ModelState.IsValid)
            {
                var proj = new Project
                {
                    LaunchDate = viewModel.Projects.LaunchDate,
                    ProjectType = viewModel.Projects.ProjectType,
                    ServiceId = viewModel.Projects.ServiceId,
                    ShowInOurWork = viewModel.Projects.ShowInOurWork,
                    Website = viewModel.Projects.Website
                };

                _db.Projects.AddOrUpdate(proj);
                _db.SaveChanges();

                var map = new ProjectTechnologyMap();

                foreach (var item in viewModel.Technologies)
                {
                    if (item.UsedInProject)
                    {
                        map.TechnologyId = item.Id;
                        map.ProjectId = proj.Id;
                        _db.ProjectTechnologyMappings.Add(map);
                        _db.SaveChanges();
                    }
                }
            }

            return RedirectToAction("Index", "Project");
        }
@for (var i = 0; i < Model.Technologies.Count; i++)
{
    <div class="form-group">
        @Html.LabelFor(x => x.Technologies[i].Name, Model.Technologies[i].Name, new {@class = "control-label col-md-2"})
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(x => x.Technologies[i].UsedInProject)
                @Html.HiddenFor(x => x.Technologies[i].Id)
            </div>
        </div>
    </div>
}
视图模型:

public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
    public List<Technology> Technologies { get; set; }        
}
public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}
public class ProjectTechnologyViewModel
{
    public IEnumerable<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects{ get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }

}
public ActionResult CreateProject()
{

    return View();
}

[HttpPost]
public ActionResult CreateProject(ProjectTechnologyViewModel viewModel)
{
    var proj = new Project();
    if (ModelState.IsValid)
    {                
        proj.LaunchDate = viewModel.Projects.LaunchDate;
        proj.ProjectType = viewModel.Projects.ProjectType;
        proj.ServiceId = viewModel.Projects.ServiceId;
        proj.ShowInOurWork = viewModel.Projects.ShowInOurWork;
        proj.Website = proj.Website;

        proj.Technologies = new List<Technology>();

        foreach (var t in viewModel.Technologies)
        {
            proj.Technologies.Add(new Technology()
            {
                Name = t.Name,
                FAClassName = t.FAClassName,
                IsActive = t.IsActive,
            });
        }

        _db.Projects.AddOrUpdate(proj);
        _db.SaveChanges();
    }

    return View(proj);
}
@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Project</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        <div class="form-group">
            @Html.LabelFor(model => model.Projects.Website, htmlAttributes: new {@class = "control-label col-md-2"})
            <div class="col-md-10">
                @Html.EditorFor(model => model.Projects.Website, new {htmlAttributes = new {@class = "form-control"}})
                @Html.ValidationMessageFor(model => model.Projects.Website, "", new {@class = "text-danger"})
            </div>
        </div>

        @for (int i = 0; i < Model.Technologies.Count(); i++)
        {
            @Html.CheckBoxFor(x=>x.Technologies[i].)
        }

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}
public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
}

public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}

public class ProjectTechnologyMap
{
    public int  Id { get; set; }
    public int ProjectId { get; set; }
    public int TechnologyId { get; set; }
}
public class ProjectTechnologyViewModel
{
    public List<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }
    public ProjectTechnologyMap ProjectTechnologyMapping { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
        ProjectTechnologyMapping = new ProjectTechnologyMap();

    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects { get; set; }
    public DbSet<ProjectTechnologyMap> ProjectTechnologyMappings { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}
public ActionResult Create()
        {
            var technologies = from t in _db.Technologies
                               orderby t.Name
                               where t.IsActive
                               select t;

            var viewModel = new ProjectTechnologyViewModel();
            viewModel.Technologies = technologies.ToList();

            return View(viewModel);
        }

        [HttpPost]
        public ActionResult Create(ProjectTechnologyViewModel viewModel)
        {            
            if (ModelState.IsValid)
            {
                var proj = new Project
                {
                    LaunchDate = viewModel.Projects.LaunchDate,
                    ProjectType = viewModel.Projects.ProjectType,
                    ServiceId = viewModel.Projects.ServiceId,
                    ShowInOurWork = viewModel.Projects.ShowInOurWork,
                    Website = viewModel.Projects.Website
                };

                _db.Projects.AddOrUpdate(proj);
                _db.SaveChanges();

                var map = new ProjectTechnologyMap();

                foreach (var item in viewModel.Technologies)
                {
                    if (item.UsedInProject)
                    {
                        map.TechnologyId = item.Id;
                        map.ProjectId = proj.Id;
                        _db.ProjectTechnologyMappings.Add(map);
                        _db.SaveChanges();
                    }
                }
            }

            return RedirectToAction("Index", "Project");
        }
@for (var i = 0; i < Model.Technologies.Count; i++)
{
    <div class="form-group">
        @Html.LabelFor(x => x.Technologies[i].Name, Model.Technologies[i].Name, new {@class = "control-label col-md-2"})
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(x => x.Technologies[i].UsedInProject)
                @Html.HiddenFor(x => x.Technologies[i].Id)
            </div>
        </div>
    </div>
}
公共类项目技术视图模型
{
公共IEnumerable技术{get;set;}
公共项目项目{get;set;}
公共项目技术视图模型()
{
项目=新项目();
}
}
DbContext:

public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
    public List<Technology> Technologies { get; set; }        
}
public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}
public class ProjectTechnologyViewModel
{
    public IEnumerable<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects{ get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }

}
public ActionResult CreateProject()
{

    return View();
}

[HttpPost]
public ActionResult CreateProject(ProjectTechnologyViewModel viewModel)
{
    var proj = new Project();
    if (ModelState.IsValid)
    {                
        proj.LaunchDate = viewModel.Projects.LaunchDate;
        proj.ProjectType = viewModel.Projects.ProjectType;
        proj.ServiceId = viewModel.Projects.ServiceId;
        proj.ShowInOurWork = viewModel.Projects.ShowInOurWork;
        proj.Website = proj.Website;

        proj.Technologies = new List<Technology>();

        foreach (var t in viewModel.Technologies)
        {
            proj.Technologies.Add(new Technology()
            {
                Name = t.Name,
                FAClassName = t.FAClassName,
                IsActive = t.IsActive,
            });
        }

        _db.Projects.AddOrUpdate(proj);
        _db.SaveChanges();
    }

    return View(proj);
}
@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Project</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        <div class="form-group">
            @Html.LabelFor(model => model.Projects.Website, htmlAttributes: new {@class = "control-label col-md-2"})
            <div class="col-md-10">
                @Html.EditorFor(model => model.Projects.Website, new {htmlAttributes = new {@class = "form-control"}})
                @Html.ValidationMessageFor(model => model.Projects.Website, "", new {@class = "text-danger"})
            </div>
        </div>

        @for (int i = 0; i < Model.Technologies.Count(); i++)
        {
            @Html.CheckBoxFor(x=>x.Technologies[i].)
        }

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}
public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
}

public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}

public class ProjectTechnologyMap
{
    public int  Id { get; set; }
    public int ProjectId { get; set; }
    public int TechnologyId { get; set; }
}
public class ProjectTechnologyViewModel
{
    public List<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }
    public ProjectTechnologyMap ProjectTechnologyMapping { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
        ProjectTechnologyMapping = new ProjectTechnologyMap();

    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects { get; set; }
    public DbSet<ProjectTechnologyMap> ProjectTechnologyMappings { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}
public ActionResult Create()
        {
            var technologies = from t in _db.Technologies
                               orderby t.Name
                               where t.IsActive
                               select t;

            var viewModel = new ProjectTechnologyViewModel();
            viewModel.Technologies = technologies.ToList();

            return View(viewModel);
        }

        [HttpPost]
        public ActionResult Create(ProjectTechnologyViewModel viewModel)
        {            
            if (ModelState.IsValid)
            {
                var proj = new Project
                {
                    LaunchDate = viewModel.Projects.LaunchDate,
                    ProjectType = viewModel.Projects.ProjectType,
                    ServiceId = viewModel.Projects.ServiceId,
                    ShowInOurWork = viewModel.Projects.ShowInOurWork,
                    Website = viewModel.Projects.Website
                };

                _db.Projects.AddOrUpdate(proj);
                _db.SaveChanges();

                var map = new ProjectTechnologyMap();

                foreach (var item in viewModel.Technologies)
                {
                    if (item.UsedInProject)
                    {
                        map.TechnologyId = item.Id;
                        map.ProjectId = proj.Id;
                        _db.ProjectTechnologyMappings.Add(map);
                        _db.SaveChanges();
                    }
                }
            }

            return RedirectToAction("Index", "Project");
        }
@for (var i = 0; i < Model.Technologies.Count; i++)
{
    <div class="form-group">
        @Html.LabelFor(x => x.Technologies[i].Name, Model.Technologies[i].Name, new {@class = "control-label col-md-2"})
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(x => x.Technologies[i].UsedInProject)
                @Html.HiddenFor(x => x.Technologies[i].Id)
            </div>
        </div>
    </div>
}
公共类NovaDB:DbContext
{
public NovaDB():base(“DefaultConnection”)
{
}
公共数据库集技术{get;set;}
公共数据库集项目{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove();
}
}
控制器:

public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
    public List<Technology> Technologies { get; set; }        
}
public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}
public class ProjectTechnologyViewModel
{
    public IEnumerable<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects{ get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }

}
public ActionResult CreateProject()
{

    return View();
}

[HttpPost]
public ActionResult CreateProject(ProjectTechnologyViewModel viewModel)
{
    var proj = new Project();
    if (ModelState.IsValid)
    {                
        proj.LaunchDate = viewModel.Projects.LaunchDate;
        proj.ProjectType = viewModel.Projects.ProjectType;
        proj.ServiceId = viewModel.Projects.ServiceId;
        proj.ShowInOurWork = viewModel.Projects.ShowInOurWork;
        proj.Website = proj.Website;

        proj.Technologies = new List<Technology>();

        foreach (var t in viewModel.Technologies)
        {
            proj.Technologies.Add(new Technology()
            {
                Name = t.Name,
                FAClassName = t.FAClassName,
                IsActive = t.IsActive,
            });
        }

        _db.Projects.AddOrUpdate(proj);
        _db.SaveChanges();
    }

    return View(proj);
}
@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Project</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        <div class="form-group">
            @Html.LabelFor(model => model.Projects.Website, htmlAttributes: new {@class = "control-label col-md-2"})
            <div class="col-md-10">
                @Html.EditorFor(model => model.Projects.Website, new {htmlAttributes = new {@class = "form-control"}})
                @Html.ValidationMessageFor(model => model.Projects.Website, "", new {@class = "text-danger"})
            </div>
        </div>

        @for (int i = 0; i < Model.Technologies.Count(); i++)
        {
            @Html.CheckBoxFor(x=>x.Technologies[i].)
        }

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}
public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
}

public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}

public class ProjectTechnologyMap
{
    public int  Id { get; set; }
    public int ProjectId { get; set; }
    public int TechnologyId { get; set; }
}
public class ProjectTechnologyViewModel
{
    public List<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }
    public ProjectTechnologyMap ProjectTechnologyMapping { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
        ProjectTechnologyMapping = new ProjectTechnologyMap();

    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects { get; set; }
    public DbSet<ProjectTechnologyMap> ProjectTechnologyMappings { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}
public ActionResult Create()
        {
            var technologies = from t in _db.Technologies
                               orderby t.Name
                               where t.IsActive
                               select t;

            var viewModel = new ProjectTechnologyViewModel();
            viewModel.Technologies = technologies.ToList();

            return View(viewModel);
        }

        [HttpPost]
        public ActionResult Create(ProjectTechnologyViewModel viewModel)
        {            
            if (ModelState.IsValid)
            {
                var proj = new Project
                {
                    LaunchDate = viewModel.Projects.LaunchDate,
                    ProjectType = viewModel.Projects.ProjectType,
                    ServiceId = viewModel.Projects.ServiceId,
                    ShowInOurWork = viewModel.Projects.ShowInOurWork,
                    Website = viewModel.Projects.Website
                };

                _db.Projects.AddOrUpdate(proj);
                _db.SaveChanges();

                var map = new ProjectTechnologyMap();

                foreach (var item in viewModel.Technologies)
                {
                    if (item.UsedInProject)
                    {
                        map.TechnologyId = item.Id;
                        map.ProjectId = proj.Id;
                        _db.ProjectTechnologyMappings.Add(map);
                        _db.SaveChanges();
                    }
                }
            }

            return RedirectToAction("Index", "Project");
        }
@for (var i = 0; i < Model.Technologies.Count; i++)
{
    <div class="form-group">
        @Html.LabelFor(x => x.Technologies[i].Name, Model.Technologies[i].Name, new {@class = "control-label col-md-2"})
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(x => x.Technologies[i].UsedInProject)
                @Html.HiddenFor(x => x.Technologies[i].Id)
            </div>
        </div>
    </div>
}
public ActionResult CreateProject()
{
返回视图();
}
[HttpPost]
公共行动结果CreateProject(项目技术视图模型视图模型)
{
var proj=新项目();
if(ModelState.IsValid)
{                
proj.LaunchDate=viewModel.Projects.LaunchDate;
proj.ProjectType=viewModel.Projects.ProjectType;
proj.ServiceId=viewModel.Projects.ServiceId;
proj.ShowInOurWork=viewModel.Projects.ShowInOurWork;
项目网站=项目网站;
项目技术=新列表();
foreach(viewModel.Technologies中的var t)
{
项目技术.添加(新技术()
{
Name=t.Name,
FAClassName=t.FAClassName,
IsActive=t.IsActive,
});
}
_db.Projects.AddOrUpdate(项目);
_db.SaveChanges();
}
返回视图(项目);
}
查看:

public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
    public List<Technology> Technologies { get; set; }        
}
public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}
public class ProjectTechnologyViewModel
{
    public IEnumerable<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects{ get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }

}
public ActionResult CreateProject()
{

    return View();
}

[HttpPost]
public ActionResult CreateProject(ProjectTechnologyViewModel viewModel)
{
    var proj = new Project();
    if (ModelState.IsValid)
    {                
        proj.LaunchDate = viewModel.Projects.LaunchDate;
        proj.ProjectType = viewModel.Projects.ProjectType;
        proj.ServiceId = viewModel.Projects.ServiceId;
        proj.ShowInOurWork = viewModel.Projects.ShowInOurWork;
        proj.Website = proj.Website;

        proj.Technologies = new List<Technology>();

        foreach (var t in viewModel.Technologies)
        {
            proj.Technologies.Add(new Technology()
            {
                Name = t.Name,
                FAClassName = t.FAClassName,
                IsActive = t.IsActive,
            });
        }

        _db.Projects.AddOrUpdate(proj);
        _db.SaveChanges();
    }

    return View(proj);
}
@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Project</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        <div class="form-group">
            @Html.LabelFor(model => model.Projects.Website, htmlAttributes: new {@class = "control-label col-md-2"})
            <div class="col-md-10">
                @Html.EditorFor(model => model.Projects.Website, new {htmlAttributes = new {@class = "form-control"}})
                @Html.ValidationMessageFor(model => model.Projects.Website, "", new {@class = "text-danger"})
            </div>
        </div>

        @for (int i = 0; i < Model.Technologies.Count(); i++)
        {
            @Html.CheckBoxFor(x=>x.Technologies[i].)
        }

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}
public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
}

public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}

public class ProjectTechnologyMap
{
    public int  Id { get; set; }
    public int ProjectId { get; set; }
    public int TechnologyId { get; set; }
}
public class ProjectTechnologyViewModel
{
    public List<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }
    public ProjectTechnologyMap ProjectTechnologyMapping { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
        ProjectTechnologyMapping = new ProjectTechnologyMap();

    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects { get; set; }
    public DbSet<ProjectTechnologyMap> ProjectTechnologyMappings { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}
public ActionResult Create()
        {
            var technologies = from t in _db.Technologies
                               orderby t.Name
                               where t.IsActive
                               select t;

            var viewModel = new ProjectTechnologyViewModel();
            viewModel.Technologies = technologies.ToList();

            return View(viewModel);
        }

        [HttpPost]
        public ActionResult Create(ProjectTechnologyViewModel viewModel)
        {            
            if (ModelState.IsValid)
            {
                var proj = new Project
                {
                    LaunchDate = viewModel.Projects.LaunchDate,
                    ProjectType = viewModel.Projects.ProjectType,
                    ServiceId = viewModel.Projects.ServiceId,
                    ShowInOurWork = viewModel.Projects.ShowInOurWork,
                    Website = viewModel.Projects.Website
                };

                _db.Projects.AddOrUpdate(proj);
                _db.SaveChanges();

                var map = new ProjectTechnologyMap();

                foreach (var item in viewModel.Technologies)
                {
                    if (item.UsedInProject)
                    {
                        map.TechnologyId = item.Id;
                        map.ProjectId = proj.Id;
                        _db.ProjectTechnologyMappings.Add(map);
                        _db.SaveChanges();
                    }
                }
            }

            return RedirectToAction("Index", "Project");
        }
@for (var i = 0; i < Model.Technologies.Count; i++)
{
    <div class="form-group">
        @Html.LabelFor(x => x.Technologies[i].Name, Model.Technologies[i].Name, new {@class = "control-label col-md-2"})
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(x => x.Technologies[i].UsedInProject)
                @Html.HiddenFor(x => x.Technologies[i].Id)
            </div>
        </div>
    </div>
}
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
项目

@Html.ValidationSummary(true,“,new{@class=“text danger”}) @LabelFor(model=>model.Projects.Website,htmlAttributes:new{@class=“controllabel col-md-2”}) @EditorFor(model=>model.Projects.Website,new{htmlAttributes=new{@class=“form control”}) @Html.ValidationMessageFor(model=>model.Projects.Website,“,new{@class=“text danger”}) @for(int i=0;ix.Technologies[i]) } }
视图图像:

复选框用于该技术的
IsActive
属性,对吗?因此,您可以这样做:

@Html.CheckBoxFor(model => model.Technologies.ToList()[i].IsActive) @Model.Technologies.ToList()[i].Name
您还需要实例化ViewModel并在GET操作中将其发送到视图,如下所示:

public ActionResult CreateProject()
{
    var model = new ProjectTechnologyViewModel();
    model.Project = new Project();
    model.Technologies = new List<Technology>();

    return View(model);
}
public ActionResult CreateProject()
{
var模型=新项目技术视图模型();
model.Project=新项目();
model.Technologies=新列表();
返回视图(模型);
}
另外,不要实例化ViewModel中的属性。在控制器中执行此操作(参见上文):

公共类项目技术视图模型
{
公共IEnumerable技术{get;set;}
公共项目{get;set;}
}

为什么将
IEnumerable
称为数组?
不会编译此-
someIEnumerable[0]

你为什么不用foreach呢

foreach(var i in Model.Technologies){
   var a =  i.Website;
}

首先,您需要一个表来存储与项目相关的技术(例如
ProjectTechnlogies
),该表将包括项目
ID
字段和技术
ID
字段的FK字段

然后需要视图模型来表示要在视图中编辑的内容

public class TechnologyVM
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsSelected { get; set; } // for binding to a checkbox
}
public class ProjectVM
{
    public string Website { get; set; }
    public IEnumerable<TechnologyVM> Technologies { get; set; }
}
注意:我在这里假设您的
IsActive
属性意味着,如果值为
false
,则它现在是一种过时的技术(可能已分配给以前的项目),并且您不希望在创建新项目时允许在视图中选择它

然后在
/Views/Shared/EditorTemplates/TechnologyVM.cshtml
中为
TechnologyVM
创建一个
EditorTemplate
(部分)(注意文件名必须与类名匹配)


我不得不更改一些模型,并添加了一个表来映射这两个模型。我决定将项目和技术模型之间的“链接”保存在一个名为ProjectTechnologyMap的共享表中。对于我创建的项目,我插入一条带有项目Id和技术Id的记录。项目Id保持不变,并且有多个技术Id,具体取决于视图中选择的技术Id数量。我还将项目详细信息保存到项目表中。我不会将任何内容保存到技术表中,因为它是静态的(我不会在“创建项目”视图中创建技术)

以下是我的有效解决方案:

型号:

public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
    public List<Technology> Technologies { get; set; }        
}
public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}
public class ProjectTechnologyViewModel
{
    public IEnumerable<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects{ get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }

}
public ActionResult CreateProject()
{

    return View();
}

[HttpPost]
public ActionResult CreateProject(ProjectTechnologyViewModel viewModel)
{
    var proj = new Project();
    if (ModelState.IsValid)
    {                
        proj.LaunchDate = viewModel.Projects.LaunchDate;
        proj.ProjectType = viewModel.Projects.ProjectType;
        proj.ServiceId = viewModel.Projects.ServiceId;
        proj.ShowInOurWork = viewModel.Projects.ShowInOurWork;
        proj.Website = proj.Website;

        proj.Technologies = new List<Technology>();

        foreach (var t in viewModel.Technologies)
        {
            proj.Technologies.Add(new Technology()
            {
                Name = t.Name,
                FAClassName = t.FAClassName,
                IsActive = t.IsActive,
            });
        }

        _db.Projects.AddOrUpdate(proj);
        _db.SaveChanges();
    }

    return View(proj);
}
@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Project</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        <div class="form-group">
            @Html.LabelFor(model => model.Projects.Website, htmlAttributes: new {@class = "control-label col-md-2"})
            <div class="col-md-10">
                @Html.EditorFor(model => model.Projects.Website, new {htmlAttributes = new {@class = "form-control"}})
                @Html.ValidationMessageFor(model => model.Projects.Website, "", new {@class = "text-danger"})
            </div>
        </div>

        @for (int i = 0; i < Model.Technologies.Count(); i++)
        {
            @Html.CheckBoxFor(x=>x.Technologies[i].)
        }

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}
public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
}

public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}

public class ProjectTechnologyMap
{
    public int  Id { get; set; }
    public int ProjectId { get; set; }
    public int TechnologyId { get; set; }
}
public class ProjectTechnologyViewModel
{
    public List<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }
    public ProjectTechnologyMap ProjectTechnologyMapping { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
        ProjectTechnologyMapping = new ProjectTechnologyMap();

    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects { get; set; }
    public DbSet<ProjectTechnologyMap> ProjectTechnologyMappings { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}
public ActionResult Create()
        {
            var technologies = from t in _db.Technologies
                               orderby t.Name
                               where t.IsActive
                               select t;

            var viewModel = new ProjectTechnologyViewModel();
            viewModel.Technologies = technologies.ToList();

            return View(viewModel);
        }

        [HttpPost]
        public ActionResult Create(ProjectTechnologyViewModel viewModel)
        {            
            if (ModelState.IsValid)
            {
                var proj = new Project
                {
                    LaunchDate = viewModel.Projects.LaunchDate,
                    ProjectType = viewModel.Projects.ProjectType,
                    ServiceId = viewModel.Projects.ServiceId,
                    ShowInOurWork = viewModel.Projects.ShowInOurWork,
                    Website = viewModel.Projects.Website
                };

                _db.Projects.AddOrUpdate(proj);
                _db.SaveChanges();

                var map = new ProjectTechnologyMap();

                foreach (var item in viewModel.Technologies)
                {
                    if (item.UsedInProject)
                    {
                        map.TechnologyId = item.Id;
                        map.ProjectId = proj.Id;
                        _db.ProjectTechnologyMappings.Add(map);
                        _db.SaveChanges();
                    }
                }
            }

            return RedirectToAction("Index", "Project");
        }
@for (var i = 0; i < Model.Technologies.Count; i++)
{
    <div class="form-group">
        @Html.LabelFor(x => x.Technologies[i].Name, Model.Technologies[i].Name, new {@class = "control-label col-md-2"})
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(x => x.Technologies[i].UsedInProject)
                @Html.HiddenFor(x => x.Technologies[i].Id)
            </div>
        </div>
    </div>
}
视图模型:

public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
    public List<Technology> Technologies { get; set; }        
}
public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}
public class ProjectTechnologyViewModel
{
    public IEnumerable<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects{ get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }

}
public ActionResult CreateProject()
{

    return View();
}

[HttpPost]
public ActionResult CreateProject(ProjectTechnologyViewModel viewModel)
{
    var proj = new Project();
    if (ModelState.IsValid)
    {                
        proj.LaunchDate = viewModel.Projects.LaunchDate;
        proj.ProjectType = viewModel.Projects.ProjectType;
        proj.ServiceId = viewModel.Projects.ServiceId;
        proj.ShowInOurWork = viewModel.Projects.ShowInOurWork;
        proj.Website = proj.Website;

        proj.Technologies = new List<Technology>();

        foreach (var t in viewModel.Technologies)
        {
            proj.Technologies.Add(new Technology()
            {
                Name = t.Name,
                FAClassName = t.FAClassName,
                IsActive = t.IsActive,
            });
        }

        _db.Projects.AddOrUpdate(proj);
        _db.SaveChanges();
    }

    return View(proj);
}
@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Project</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        <div class="form-group">
            @Html.LabelFor(model => model.Projects.Website, htmlAttributes: new {@class = "control-label col-md-2"})
            <div class="col-md-10">
                @Html.EditorFor(model => model.Projects.Website, new {htmlAttributes = new {@class = "form-control"}})
                @Html.ValidationMessageFor(model => model.Projects.Website, "", new {@class = "text-danger"})
            </div>
        </div>

        @for (int i = 0; i < Model.Technologies.Count(); i++)
        {
            @Html.CheckBoxFor(x=>x.Technologies[i].)
        }

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}
public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
}

public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}

public class ProjectTechnologyMap
{
    public int  Id { get; set; }
    public int ProjectId { get; set; }
    public int TechnologyId { get; set; }
}
public class ProjectTechnologyViewModel
{
    public List<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }
    public ProjectTechnologyMap ProjectTechnologyMapping { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
        ProjectTechnologyMapping = new ProjectTechnologyMap();

    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects { get; set; }
    public DbSet<ProjectTechnologyMap> ProjectTechnologyMappings { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}
public ActionResult Create()
        {
            var technologies = from t in _db.Technologies
                               orderby t.Name
                               where t.IsActive
                               select t;

            var viewModel = new ProjectTechnologyViewModel();
            viewModel.Technologies = technologies.ToList();

            return View(viewModel);
        }

        [HttpPost]
        public ActionResult Create(ProjectTechnologyViewModel viewModel)
        {            
            if (ModelState.IsValid)
            {
                var proj = new Project
                {
                    LaunchDate = viewModel.Projects.LaunchDate,
                    ProjectType = viewModel.Projects.ProjectType,
                    ServiceId = viewModel.Projects.ServiceId,
                    ShowInOurWork = viewModel.Projects.ShowInOurWork,
                    Website = viewModel.Projects.Website
                };

                _db.Projects.AddOrUpdate(proj);
                _db.SaveChanges();

                var map = new ProjectTechnologyMap();

                foreach (var item in viewModel.Technologies)
                {
                    if (item.UsedInProject)
                    {
                        map.TechnologyId = item.Id;
                        map.ProjectId = proj.Id;
                        _db.ProjectTechnologyMappings.Add(map);
                        _db.SaveChanges();
                    }
                }
            }

            return RedirectToAction("Index", "Project");
        }
@for (var i = 0; i < Model.Technologies.Count; i++)
{
    <div class="form-group">
        @Html.LabelFor(x => x.Technologies[i].Name, Model.Technologies[i].Name, new {@class = "control-label col-md-2"})
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(x => x.Technologies[i].UsedInProject)
                @Html.HiddenFor(x => x.Technologies[i].Id)
            </div>
        </div>
    </div>
}
在我的视图中循环以处理技术列表:

public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
    public List<Technology> Technologies { get; set; }        
}
public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}
public class ProjectTechnologyViewModel
{
    public IEnumerable<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects{ get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }

}
public ActionResult CreateProject()
{

    return View();
}

[HttpPost]
public ActionResult CreateProject(ProjectTechnologyViewModel viewModel)
{
    var proj = new Project();
    if (ModelState.IsValid)
    {                
        proj.LaunchDate = viewModel.Projects.LaunchDate;
        proj.ProjectType = viewModel.Projects.ProjectType;
        proj.ServiceId = viewModel.Projects.ServiceId;
        proj.ShowInOurWork = viewModel.Projects.ShowInOurWork;
        proj.Website = proj.Website;

        proj.Technologies = new List<Technology>();

        foreach (var t in viewModel.Technologies)
        {
            proj.Technologies.Add(new Technology()
            {
                Name = t.Name,
                FAClassName = t.FAClassName,
                IsActive = t.IsActive,
            });
        }

        _db.Projects.AddOrUpdate(proj);
        _db.SaveChanges();
    }

    return View(proj);
}
@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Project</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })

        <div class="form-group">
            @Html.LabelFor(model => model.Projects.Website, htmlAttributes: new {@class = "control-label col-md-2"})
            <div class="col-md-10">
                @Html.EditorFor(model => model.Projects.Website, new {htmlAttributes = new {@class = "form-control"}})
                @Html.ValidationMessageFor(model => model.Projects.Website, "", new {@class = "text-danger"})
            </div>
        </div>

        @for (int i = 0; i < Model.Technologies.Count(); i++)
        {
            @Html.CheckBoxFor(x=>x.Technologies[i].)
        }

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}
public class Project
{
    public int Id { get; set; }
    public string Website { get; set; }
}

public class Technology
{
    public int Id { get; set; }
    public string Name { get; set; }
    public bool IsActive { get; set; }
}

public class ProjectTechnologyMap
{
    public int  Id { get; set; }
    public int ProjectId { get; set; }
    public int TechnologyId { get; set; }
}
public class ProjectTechnologyViewModel
{
    public List<Technology> Technologies { get; set; } 
    public Project Projects { get; set; }
    public ProjectTechnologyMap ProjectTechnologyMapping { get; set; }

    public ProjectTechnologyViewModel()
    {
        Projects = new Project();
        ProjectTechnologyMapping = new ProjectTechnologyMap();

    }
}
public class NovaDB : DbContext
{
    public NovaDB(): base("DefaultConnection")
    {

    }

    public DbSet<Technology> Technologies { get; set; }
    public DbSet<Project> Projects { get; set; }
    public DbSet<ProjectTechnologyMap> ProjectTechnologyMappings { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}
public ActionResult Create()
        {
            var technologies = from t in _db.Technologies
                               orderby t.Name
                               where t.IsActive
                               select t;

            var viewModel = new ProjectTechnologyViewModel();
            viewModel.Technologies = technologies.ToList();

            return View(viewModel);
        }

        [HttpPost]
        public ActionResult Create(ProjectTechnologyViewModel viewModel)
        {            
            if (ModelState.IsValid)
            {
                var proj = new Project
                {
                    LaunchDate = viewModel.Projects.LaunchDate,
                    ProjectType = viewModel.Projects.ProjectType,
                    ServiceId = viewModel.Projects.ServiceId,
                    ShowInOurWork = viewModel.Projects.ShowInOurWork,
                    Website = viewModel.Projects.Website
                };

                _db.Projects.AddOrUpdate(proj);
                _db.SaveChanges();

                var map = new ProjectTechnologyMap();

                foreach (var item in viewModel.Technologies)
                {
                    if (item.UsedInProject)
                    {
                        map.TechnologyId = item.Id;
                        map.ProjectId = proj.Id;
                        _db.ProjectTechnologyMappings.Add(map);
                        _db.SaveChanges();
                    }
                }
            }

            return RedirectToAction("Index", "Project");
        }
@for (var i = 0; i < Model.Technologies.Count; i++)
{
    <div class="form-group">
        @Html.LabelFor(x => x.Technologies[i].Name, Model.Technologies[i].Name, new {@class = "control-label col-md-2"})
        <div class="col-md-10">
            <div class="checkbox">
                @Html.EditorFor(x => x.Technologies[i].UsedInProject)
                @Html.HiddenFor(x => x.Technologies[i].Id)
            </div>
        </div>
    </div>
}
for(var i=0;ix.Technologies[i].Name,Model.Technologies[i].Name,new{@class=“control label col-md-2”}) @EditorFor(x=>x.Technologies[i].UsedInProject) @HiddenFor(x=>x.T