Словарь 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.

Ответы на вопрос(4)

Ваш ответ на вопрос