wompが言ったように、ブラウザはドロップダウンリストの選択された値のみを送信します。これは、デフォルトのモデルバインダーによって簡単にバインドされます。以下を参照してください。
クライアントでPossibleValuesリストを編集していない場合は、それらを再送信する必要はありません。リストを再入力する必要がある場合は、最初にディクショナリに入力したのと同じ方法を使用して、投稿アクションでサーバー側で実行します。
たとえば、あなたのページでは:
<%@ 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()は、入力されたディクショナリオブジェクトを返すメソッドです。
詳細については、この同様の質問を参照してください