次のようなドロップダウン選択値のリストを保持するビュー モデル プロパティがあります。
private ListDictionary _claimDropdownValueCollection = new ListDictionary();
public ListDictionary ClaimDropdownValueCollection { get { return _claimDropdownValueCollection; } set { _claimDropdownValueCollection = value; } }
GETを実行すると、「ドロップダウンタイプ」の名前を含むビューモデルでも別のListDictionaryをループしています。
@foreach (System.Collections.DictionaryEntry de in Model.CCSetting_ClaimDropdownTypeCollection) {
<div class="formRow">
<label>@EverythingToDoWith_CCSetting_ClaimDropdownTypes.getDropdownTypeName(Model.ccClaim.clientID, Convert.ToInt32(de.Key))</label>
<div class="formRight searchDrop">
@Html.DropDownListFor(m => m.ClaimDropdownValueCollection[@de.Key], (IEnumerable<SelectListItem>) @de.Value, new { @class = "chzn-select", @data_placeholder="Choose an option...", @style="width: 350px;" })
</div>
<div class="clear"></div>
</div>
}
したがって、基本的に、これは一連のドロップダウンをロードし、それらの「ラベル」は辞書のキーに従って出力されます。EACH ドロップダウンの「値」は、IENUMERABLE をそれぞれ含む各ディクショナリの VALUE から取得されます。
これまでのところすべて順調です。ユーザーは各ドロップダウンで選択を行い、HTTP POST を実行します。ブラウザー開発者ツールで、次のデータがポストバックされているのを確認します。
ClaimDropdownValueCollection[1]:2
ClaimDropdownValueCollection[2]:5
ClaimDropdownValueCollection[3]:
ClaimDropdownValueCollection[4]:11
つまり、キー 1、2、3、4 を持つ 4 つのドロップダウン (私のキーはより複雑で、例のためにここでは単純なキーになります) で、4 つのうち 3 つに選択肢があるので、選択した ID の 2、5、11 を返します。
しかし問題は、投稿されたデータを受け取る [HttpPost] コントローラー メソッド内でデバッグするときに、このデータをビュー モデル listdictionary オブジェクトの一部として表示できないことです。これは、「ClaimDropdownValueCollection」プロパティが空であることを示しています。
私は次のようなことを言うことができることを期待しています:
foreach (DictionaryEntry de in vm.ClaimDropdownValueCollection) {
//do something here with de.Key and de.Value
}
では、RAZOR コードで何が間違っているのでしょうか?... 助けてください!