在ViewModel中将输入绑定到Dictionary

时间:2014-11-17 13:16:13

标签: asp.net-mvc

我在ASP.NET MVC上有以下ViewModel:

public CategoryNewViewModel {
  public Int32 Type { get ; set; }
  public IDictionary<String, String> Descriptions { get; set; }
}

描述键是语言,描述值是文本。

在视图中,我需要渲染N个输入,每种语言一个......

提交表单后,Descriptions属性将变为:

"en", "The description in english"
"pt", "A descrição em português"
"fr", "La description en français"

一个问题是我不确定在视图中会有多少输入。

有谁知道这种绑定是否可行?

1 个答案:

答案 0 :(得分:0)

我认为我找到了很好的绑定字典方式,它实际上就是你所需要的。

在ASP.NET MVC 4中,默认模型绑定器将使用典型的字典索引器语法property[key]绑定字典。

如果模型中有Dictionary<string, string>,您现在可以使用以下标记直接绑定到它:

<input type="hidden" name="MyDictionary[MyKey]" value="MyValue" />

例如,如果要使用一组复选框来选择字典元素的子集并绑定回同一属性,则可以执行以下操作:

@foreach(var kvp in Model.MyDictionary)
{
    <input type="checkbox" name="@("MyDictionary[" + kvp.Key + "]")"
        value="@kvp.Value" />
}

从此question =)

中被盗