Das MVC3-Wörterbuch ist nicht an das Modell gebunden

Ich habe ein Modell, das eine Dictionary-Eigenschaft enthält. (Dies wurde aus einem größeren Projekt in dieses Beispiel destilliert, von dem ich bestätigt habe, dass es immer noch dasselbe Problem gibt.)

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

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

eine Steuerung

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

und eine Aussicht

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

Dies wird für den Browser folgendermaßen dargestellt:

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

Das Problem, das ich habe, ist, dass das Wörterbuch auf dem Modell nach dem Postback null ist.

Mache ich das richtig oder gibt es einen besseren Weg?

Ich benötige eine Art Schlüsselwertspeicher, da die Felder in meinem Formular variabel sind. Daher kann ich kein POCO-Modell verwenden.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage