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
,因此您实际上可以对其进行迭代。而且,这也行不通(好吧,在你发布之前,它似乎会起作用)。