Словарь MVC3 не привязан к модели
У меня есть модель, которая содержит свойство словаря. (это было извлечено из более крупного проекта в этот пример, который, как я подтвердил, все еще имеет ту же проблему)
<code>public class TestModel { public IDictionary<string, string> Values { get; set; } public TestModel() { Values = new Dictionary<string, string>(); } } </code>
контроллер
<code>public class TestController : Controller { public ActionResult Index() { TestModel model = new TestModel(); model.Values.Add("foo", "bar"); model.Values.Add("fizz", "buzz"); model.Values.Add("hello", "world"); return View(model); } [HttpPost] public ActionResult Index(TestModel model) { // model.Values is null after post back here. return null; // I set a break point here to inspect 'model' } } </code>
и вид
<code>@using TestMVC.Models @model TestModel @using (Html.BeginForm()) { @Html.EditorFor(m => m.Values["foo"]); <br /> @Html.EditorFor(m => m.Values["fizz"]); <br /> @Html.EditorFor(m => m.Values["hello"]); <br /> <input type="submit" value="submit" /> } </code>
Это отображает в браузере, как это:
<code><input class="text-box single-line" id="Values_foo_" name="Values[foo]" type="text" value="bar" /> </code>
Проблема, с которой я сталкиваюсь, состоит в том, что словарь является нулевым в модели после обратной передачи.
Am I doing this right, or is there a better way?Мне нужно иметь какое-то хранилище значений ключей, так как поля в моей форме являются переменными, поэтому я не могу использовать модель POCO.