Como womp dicho, un navegador sólo presentará el valor seleccionado de una lista desplegable. Esto se puede vincular fácilmente con el enlace de modelo predeterminado, ver a continuación.
Si no está editando la lista PossibleValues en el cliente, entonces no hay necesidad de volver a enviarlas. Si necesita volver a llenar la lista, hágalo desde el lado del servidor en su acción de publicación utilizando el mismo método con el que originalmente llenó el diccionario.
Por ejemplo, en que la página:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<ViewModel1>" %>
<!-- some html here -->
<%= Html.DropDownListFor(x => x.SelectedKey, new SelectList(Model.PossibleValues, "key", "value"))%>
En su controlador
[AcceptVerbs(HttpVerbs.Get)]
public ViewResult Edit() {
var model = new ViewModel1 {
PossibleValues = GetDictionary() //populate your Dictionary here
};
return View(model);
}
[AcceptVerbs(HttpVerbs.Post)]
public ViewResult Edit(ViewModel1 model) { //default model binding
model.PossibleValues = GetDictionary(); //repopulate your Dictionary here
return View(model);
}
Dónde GetDictionary() es un método que devuelve el objeto Dictionary poblada.
See this similar question for more details
¿Está utilizando ASP.NET MVC versión 1 o 2? –
Estoy usando la versión 2 – jameszhao00