problemas con ASP MVC + Html.DropDownList () usando un patrón ModelView

Recientemente publiqué una pregunta acerca de la lista desplegable del ayudante html y la puse a trabajar (aquí). Pero ahora he decidido que era mucho más inteligente cambiar a los patrones de ModelView, por lo que tengo acceso a métodos fuertemente tipados en mis vistas, etc. Lo que hice fue hacer algunos ajustes al código en mi otro tema de la siguiente manera:

VacatureFormViewModel:

<code>public class VacaturesFormViewModel
{
    public Vacatures Vacature { get; private set; }
    public SelectList EducationLevels { get; private set; }
    public SelectList Branches { get; private set; }
    public SelectList CareerLevels { get; private set; }

    Repository repository;

    // Constructor
    public VacaturesFormViewModel(Vacatures vacature)
    {
        this.Vacature = vacature;
        this.repository = new Repository();
        this.EducationLevels = new SelectList(repository.GetAllEducationLevels(),"ID","Name",vacature.EducationLevels);
        this.Branches = new SelectList(repository.GetAllBranches(),"ID","Name",vacature.Branches);
        this.CareerLevels = new SelectList(repository.GetAllCareerLevels(), "ID", "Name", vacature.CareerLevels);

    }
}
</code>

BanenController:

<code>//
    // GET: /Banen/Create

    public ActionResult Create()
    {
        Vacatures vacature = new Vacatures();
        return View(new VacaturesFormViewModel(vacature));
    }

    //
    // POST: /Banen/Create

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(Vacatures vacatureToAdd)
    {
        if (ModelState.IsValid)
        {
            try
            {
                // TODO: Add insert logic here
                repository.AddToVacatures(vacatureToAdd);
                repository.SaveChanges();

                // Return to listing page if succesful
                return RedirectToAction("Index");
            }
            catch (Exception e)
            {
                return View();
            }
        }
    }
</code>

Y mi vista Create.aspx (parte de ella):

<code><% using (Html.BeginForm()) {%>

    <fieldset>
        <legend>Fields</legend>
        <p>
            <label for="Title">Title:</label>
            <%= Html.TextBox("Title", Model.Vacature.Title) %>
            <%= Html.ValidationMessage("Title", "*") %>
        </p>
        <p>
            <label for="Content">Content:</label>
            <%= Html.TextArea("Content", Model.Vacature.Content) %>
            <%= Html.ValidationMessage("Content", "*") %>
        </p>
        <p>
            <label for="EducationLevels">EducationLevels:</label>
            <%= Html.DropDownList("EducationLevels", Model.EducationLevels)%>
            <%= Html.ValidationMessage("EducationLevels", "*") %>
        </p>
        <p>
            <label for="CareerLevels">CareerLevels:</label>
            <%= Html.DropDownList("CareerLevels", Model.CareerLevels)%>
            <%= Html.ValidationMessage("CareerLevels", "*")%>
        </p>
        <p>
            <label for="Branches">Branches:</label>
            <%= Html.DropDownList("Branches", Model.Branches)%>
            <%= Html.ValidationMessage("Branches", "*")%>
        </p>
        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>
<% } %>
</code>

Para guiar he usado elNerdDinner tutorial por ScottGu y he leído varios temas aquí.

Mi pregunta es si es posible dejar que MVC ASP establezca mi nivel de carrera, nivel de educación y nivel (listas desplegables) automáticamente, ya que actualmente está devolviendo una cadena de identificación que no es lo que quiero. Cuando cambio la creación de SelectList a:

<code>this.CareerLevels = new SelectList(repository.GetAllCareerLevels(), vacature.CareerLevels);
</code>

Así que sin la "ID" y el "Nombre" tampoco se guarda (supongo que aún se devuelve como una cadena en el método de publicación, y no el objeto en sí) y junto a esto, se muestra en la vista como: vacature. EducationLevels, etc. Así que no se enumeran los nombres sino el objeto en sí.

Pregunta final Entonces, en resumen, mi pregunta es si es posible usar este enfoque para establecer mi nivel de educación, nivel de educación y nivel de carrera. ¿Entonces no automáticamente?

En cuyo caso todavía tengo que usar cosas como:

<code>[AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Create(FormCollection form)
    {
        Vacatures vacatureToAdd = new Vacatures();

        // Retrieve the education level by its ID
        if (!form["EducationLevels"].Equals(""))
        {
            Guid educationID = new Guid(form["EducationLevels"]);
            vacatureToAdd.EducationLevels = repository.GetEducationLevelByID(educationID);
        }
</code>

¿En mi mando? ¿O hay otras opciones más suaves?

Respuestas a la pregunta(3)

Su respuesta a la pregunta