Speichern von Viele-zu-Viele-Beziehungsdaten in der MVC-Erstellungsansicht

Ich habe einige Probleme mit einer Viele-zu-Viele-Beziehung, die die Ergebnisse einer Erstellungsansicht speichert.

Ich möchte eine Erstellungsseite für ein neues Benutzerprofil erstellen, das eine Checkliste enthält, mit der sie Kurse auswählen können (viele zu viele Beziehungen). Meine Ansicht nimmt die Aufzeichnungen von derCourses Datenbank und zeigt sie alle mit Kontrollkästchen.

Sobald der Benutzer die Daten veröffentlicht, möchte ich meine aktualisierenuserprofile Modell und auch diecourses viele-zu-viele Beziehung. Das ist der Code, den ich vermisst habe!

Ich bin neu bei MVC und habe recherchiert, aber ich konnte es noch nicht tun.

Ich folge diesem Beispiel:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/updating-related-data-with-the-entity-framework-in-an-asp-net-mvc- Anwendung

Dies ist das Modell:

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

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

public class UserProfileDBContext : DbContext
{
    public DbSet<UserProfile> UserProfiles { get; set; }
    public DbSet<Courses> usrCourses{ get; set; }
}

Ich habe auch ein ViewModel hinzugefügt:

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

Dies ist dascreate Controller, der die Kontrollkästchen der Kurse ausfüllt:

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

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

Das ist die Ansicht

@{
    int cnt = 0;
    List<MySolution.ViewModels.AssignedCourseData> courses = ViewBag.CoursePopulate;

    foreach (var course in courses)
    {
        <input type="checkbox" name="selectedCourse" value="@course.CourseID" /> 
        @course.CourseDescription
    }
}

Und dies ist der Controller, der die Daten abruft (und wo ich sie speichern möchte). Es wird als Parameterstring[] selectedCourse für die Checkboxen:

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage