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