我有一个视图模型属性来保存下拉选择值列表,例如:
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>
}
所以基本上,这会加载一堆下拉列表,它们的“标签”是根据字典中的键打印的。每个下拉列表的“值”是从每个字典的 VALUE 中获得的,每个字典都包含一个 IENUMERABLE。
到目前为止一切都很好。现在用户在每个下拉列表中进行选择,然后我执行 HTTP POST。在浏览器开发者工具中,我看到以下数据被发回:
ClaimDropdownValueCollection[1]:2
ClaimDropdownValueCollection[2]:5
ClaimDropdownValueCollection[3]:
ClaimDropdownValueCollection[4]:11
所以这是 4 个带有键 1、2、3、4 的下拉菜单(为了我的示例,我的键会更复杂,这里是简单的键),四个中有三个有选择,所以我传回所选 ID 的 2、5 和 11。
但问题是,当我在接收发布数据的 [HttpPost] 控制器方法中进行调试时,我无法将此数据视为视图模型 listdictionary 对象的一部分。这表明“ClaimDropdownValueCollection”属性为空。
我希望能够说类似的话:
foreach (DictionaryEntry de in vm.ClaimDropdownValueCollection) {
//do something here with de.Key and de.Value
}
那么我在 RAZOR 代码中做错了什么?...帮助!