У меня есть некоторые проблемы с отношениями Many -to -many, сохраняющими результаты создания представления.
Я хочу создать страницу для нового профиля пользователя с контрольным списком, который позволяет им выбирать курсы (отношения многие ко многим ). Мое представление берет записи из базы данных Courses
и показывает их все с флажками.
Как только пользователь публикует данные, я хочу обновить свою модель userprofile
, а также отношение courses
many -к -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);
}