Asp.net mvc 4 MVC4绑定到字典

Asp.net mvc 4 MVC4绑定到字典,asp.net-mvc-4,dictionary,bind,editorformodel,Asp.net Mvc 4,Dictionary,Bind,Editorformodel,我在互联网上四处寻找,但似乎没有一个解决方案适合我 我有以下视图模型: public class ConfigsViewModel { // iOS Dictionary public Dictionary<string, object> IosDictionary { get; set; } // Android Dictionary public Dictionary<string, object> AndroidDiction

我在互联网上四处寻找,但似乎没有一个解决方案适合我

我有以下视图模型:

public class ConfigsViewModel
{
    // iOS Dictionary
    public Dictionary<string, object> IosDictionary { get; set; }   

    // Android Dictionary
    public Dictionary<string, object> AndroidDictionary { get; set; } 
}
public类ConfigsViewModel
{
//iOS字典
公共字典IosDictionary{get;set;}
//安卓字典
公共字典AndroidDictionary{get;set;}
}
这些字典中的值要么是布尔值,要么是字符串。我想显示一个类似于表的编辑视图,并且我想绑定这些字典。我的观点是这样的:

@模型移动品牌工具.Models.ViewModels.ConfigsViewModel

<div>
    @using (Html.BeginForm("SaveAppConfig", "Project", "POST"))
    {
        <table class="config-table">
            <tr>
                <th></th>
                <th>iOS</th>
                <th>Android</th>
            </tr>
            @foreach (var kvp in Model.IosDictionary)
            {
                <tr>
                    <td>
                        @kvp.Key
                    </td>
                    <td>
                        @Html.EditorFor(model => model.IosDictionary[kvp.Key])
                    </td>
                    <td>
                        @if (Model.AndroidDictionary.ContainsKey(kvp.Key))
                        {
                            @Html.EditorFor(model => model.AndroidDictionary[kvp.Key])
                        }
                    </td>
                </tr>
            }
        </table>
        <input type="submit" value="Save"/>    
    }
</div>

@使用(Html.BeginForm(“SaveAppConfig”、“Project”、“POST”))
{
网间网操作系统
安卓
@foreach(Model.IosDictionary中的var kvp)
{
@kvp.Key
@EditorFor(model=>model.iosdirectionary[kvp.Key])
@if(Model.AndroidDictionary.ContainsKey(kvp.Key))
{
@EditorFor(model=>model.AndroidDictionary[kvp.Key])
}
}
}
问题是,在SaveAppConfig操作中,当我检查模型时,该值不是作为字典中键的值的字符串,而是一个字符串数组(文本输入中的值)。 在字典中,我有布尔值和字符串,所以我不能使用TextBoxFor。 有更好的方法装订字典吗?我应该写一个定制活页夹吗?如果是这样,它应该是什么样子

谢谢,


Cosmin

由于您在foreach中,因此需要稍微不同地提取值

@foreach(var kvp in Model.IosDictionary){
    @Html.EditorFor(model => model.IosDictionary[kvp.Key])
}
应该是

@foreach(var kvp in Model.IosDictionary){
    @Html.EditorFor(model => kvp.Value)
}

我不是100%肯定你能做到kvp.Value。通过迭代查找字典,发现此

字典实现了
IEnumerable
,因此您实际上可以对其进行迭代。而且,这也行不通(好吧,在你发布之前,它似乎会起作用)。