Dicionário MVC3 não vinculado ao modelo

Eu tenho um modelo que contém uma propriedade de dicionário. (isso foi destilado de um projeto maior para este exemplo, que eu confirmei ainda tem o mesmo problema)

<code>public class TestModel
{
    public IDictionary<string, string> Values { get; set; }

    public TestModel()
    {
        Values = new Dictionary<string, string>();
    }
}
</code>

um controlador

<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>

e uma visão

<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>

Isso renderiza para o navegador assim:

<code><input class="text-box single-line" id="Values_foo_" name="Values[foo]" type="text" value="bar" />
</code>

O problema que estou tendo é que o dicionário é nulo no modelo após o postback.

Estou fazendo isso certo ou há uma maneira melhor?

Eu preciso ter algum tipo de armazenamento de valor-chave, pois os campos no meu formulário são variáveis, então não posso usar um modelo POCO.

questionAnswers(4)

yourAnswerToTheQuestion