Salvando muitos para muitos dados de relacionamento na visualização Criar do MVC

Eu tenho alguns problemas com um relacionamento muitos-para-muitos, salvando os resultados de uma exibição de criação.

Eu quero fazer uma página de criação para um novo perfil de usuário que tenha uma lista de verificação que permita que eles escolham cursos (muitos para muitos relacionamentos). Minha opinião leva os registros doCourses banco de dados e mostra todos eles com caixas de seleção.

Depois que o usuário posta os dados, eu quero atualizar meuuserprofile modelo, e também ocourses relacionamento muitos-para-muitos. Esse é o código que eu sinto falta!

Sou novo no MVC e tenho pesquisado, mas ainda não consegui.

Eu estou seguindo este exemplo:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using-mvc/updating-related-data-with-entity-framework-in-an-asp-net-mvc- aplicação

Este é o modelo:

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

Eu também adicionei um ViewModel:

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

Isto é ocreate Controlador que preenche as caixas de seleção de cursos:

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

Esta é a visão

@{
    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
    }
}

E este é o controler que obtém os dados (e onde eu quero salvá-los). Obtém como parâmetrostring[] selectedCourse para as caixas de seleção:

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

questionAnswers(1)

yourAnswerToTheQuestion