Как сказал womp, браузер отправит только выбранное значение из выпадающего списка. Это легко связывается с привязкой модели по умолчанию, см. Ниже.
Если вы не редактируете список возможных значений на клиенте, нет необходимости отправлять их обратно. Если вам нужно снова заполнить список, сделайте это на стороне сервера в вашем действии post, используя тот же метод, которым вы изначально заполнили Словарь.
Например, на вашей странице:
<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<ViewModel1>" %>
<!-- some html here -->
<%= Html.DropDownListFor(x => x.SelectedKey, new SelectList(Model.PossibleValues, "key", "value"))%>
В вашем контроллере
[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);
}
Где GetDictionary () - это метод, который возвращает заполненный вами объект Dictionary.
См. Этот же вопрос для получения более подробной информации