인터넷에서 둘러 보았지만 어느 솔루션도 나에게 적합하지 않습니다. 이러한 사전에MVC 4 사전에 바인딩
public class ConfigsViewModel
{
// iOS Dictionary
public Dictionary<string, object> IosDictionary { get; set; }
// Android Dictionary
public Dictionary<string, object> AndroidDictionary { get; set; }
}
값은 부울 또는 문자열 중 하나입니다 :
나는 다음 뷰 모델을 가지고있다. 편집보기와 같은 표를 표시하고 이러한 사전을 바인딩하고 싶습니다. 내보기는 다음과 같습니다
@model의 MobileRebrandingTool.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>
문제는 그 SaveAppConfig 활동에, 나는 모델 대신 키에 대한 값으로 문자열을 검사 할 때 사전은 값이 하나의 문자열 (텍스트 입력의 값)의 배열입니다. 사전에는 값이 bool 및 문자열로 있으므로 TextBoxFor를 사용할 수 없습니다. 사전을 바인딩하는 더 좋은 방법이 있습니까? 맞춤 바인더를 써야하나요? 그렇다면 어떻게 생겼을까요?
는코스 민, 감사
당신이 조금 다르게@foreach(var kvp in Model.IosDictionary){
@Html.EditorFor(model => model.IosDictionary[kvp.Key])
}
이
@foreach(var kvp in Model.IosDictionary){
@Html.EditorFor(model => kvp.Value)
}
I과 같이해야 값을 당겨하는 데 필요한 foreach 문에 있기 때문에
Dictionary는'IEnumerable>'를 구현하므로 실제로 반복 할 수 있습니다. 또한 작동하지 않을 것입니다 (글쎄, 게시 할 때까지 작동하는 것 같습니다). –
Casey