Сохранение данных отношения «многие ко многим» в представлении MVC Create

У меня есть некоторые проблемы с отношениями Many -to -many, сохраняющими результаты создания представления.

Я хочу создать страницу для нового профиля пользователя с контрольным списком, который позволяет им выбирать курсы (отношения многие ко многим ). Мое представление берет записи из базы данных Coursesи показывает их все с флажками.

Как только пользователь публикует данные, я хочу обновить свою модель userprofile, а также отношение coursesmany -к -many. Это код, который мне не хватает!

Я новичок в MVC, и я исследовал, но пока не мог этого сделать.

Я следую этому примеру: http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/updating-related-data-with-the-entity-framework-in-an-asp-net-mvc-application

Это модель:

public class UserProfile
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual ICollection  usercourses { get; set; }
}

public class Courses
{
    public int CourseID { get; set; }
    public string CourseDescripcion { get; set; }
    public virtual ICollection UserProfiles { get; set; }
}

public class UserProfileDBContext : DbContext
{
    public DbSet UserProfiles { get; set; }
    public DbSet usrCourses{ get; set; }
}

Я также добавил ViewModel:

namespace Mysolution.ViewModels
{
    public class AssignedCourseData
    {
        public int CourseID { get; set; }
        public string CourseDescription { get; set; }
        public bool Assigned { get; set; }
    }
}

Это createКонтроллер, который заполняет флажки курсов:

public ActionResult Create()
{
    PopulateCoursesData();
    return View();
}

private void PopulateCoursesData()
{
    var CoursesData = db.usrCourses;
    var viewModel = new List();
    foreach (var item in CoursesData)
    {
        viewModel.Add(new AssignedCourseData {
            CourseID = item.CourseID,
            CourseDescription  = item.CourseDescription,
            Assigned = false });
    }
    ViewBag.CoursePopulate = viewModel;
}

Это вид

@{
    int cnt = 0;
    List courses = ViewBag.CoursePopulate;

    foreach (var course in courses)
    {
         
        @course.CourseDescription
    }
}

А это контроллер, который получает данные (и куда я хочу их сохранить ). Получается как параметр string[] selectedCourseдля флажков:

[HttpPost]
public ActionResult Create(UserProfile userprofile, string[] selectedCourse)
{
    if (ModelState.IsValid)
    {
        db.UserProfiles.Add(userprofile);

        //TO DO: Save data from many to many (this is what I can't do!)

        db.SaveChanges();
    }

    return View(userprofile);
}

33
задан eKek0 27 January 2014 в 10:23
поделиться