Diccionario MVC3 no vinculante al modelo

Tengo un modelo que contiene una propiedad del diccionario. (Esto se ha extraído de un proyecto más grande en este ejemplo, que he confirmado todavía tiene el mismo problema)

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

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

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

y una vista

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

Esto se traduce en el navegador de esta manera:

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

El problema que tengo es que el diccionario es nulo en el modelo después de la devolución de datos.

¿Estoy haciendo esto bien, o hay una mejor manera?

Necesito tener algún tipo de almacenamiento de valor-clave, ya que los campos en mi formulario son variables, por lo que no puedo usar un modelo POCO.

Respuestas a la pregunta(4)

Su respuesta a la pregunta