我正在尝试在MVC中绑定字典值。
在动作中,我有:
model.Params = new Dictionary<string, string>(); model.Params.Add("Value1", "1"); model.Params.Add("Value2", "2"); model.Params.Add("Value3", "3");
在视图中,我有:
@foreach (KeyValuePair<string, string> kvp in Model.Params) { <tr> <td> <input type="hidden" name="Params.Key" value="@kvp.Key" /> @Html.TextBox("Params[" + kvp.Key + "]") </td> </tr> }
但是视图不显示初始值,并且在提交表单时Params属性为null?
Params
您应该看看scott hanselman的这篇文章:http : //www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx
默认的活页夹只理解以下格式的字典:
params[0].key = kvp.key params[0].value = kvp.value
参数的索引必须是连续的,从0开始且没有任何间隔。当前的助手不支持此功能,因此您应该自己创建表单输入字段。
您当然可以实现自己的活页夹,如下所示:http : //siphon9.net/loune/2009/12/a-intuitive-dictionary-model-binder-for-asp-net- mvc/