Скрытый ввод для Dictionary в ASP.NET MVC 3

Мне нужно получить свойства моей модели в действии Post, поэтому для них нужен скрытый элемент, но у меня проблема с типом Dictionary <string, string>. это моя модель:

public class ViewModel{
...
 public ViewPart ViewPart { get; set; }
}

public class ViewPart {
...
 public Dictionary<string, string> Flags { get; set; }
}

И мой контроллер:

Dictionary<string, string> flags = new Dictionary<string, string>();
flags.Add("kind", "Edit");
flags.Add("Command", "Save");
ViewModel model = new ViewModel(){ Flags  = flags };
return View(model);

В поле зрения:

@foreach(var item in Model.ViewPart.Flags) { 
 <input type="hidden" id="ViewPart_Flags_@(item.Key)" value="@item.Value" name="ViewPart.Flags[@(item.Key)]" />
}

Также я пробую этот:

@foreach(var item in Model.ViewPart.Flags) { 
  @Html.HiddenFor(modelItem => item)
}

Обновление Почтовое действие:

[HttpPost]
public ActionResult MyPostAction(ViewModel model){
  //model.ViewPart.Flags is null
}

Но в действии Post Flagsвсегда имеет значение null, почему? где моя вина? Есть ли лучший способ передать переменные из представления в действие?

5
задан 7 July 2012 в 10:28
поделиться