TryUpdateModel не работает со словарем<Enum, строка>

Предполагая, что эти классы \ enums:

public enum Test
{
    MyTest1 = 0,
    MyTest2,
    MyTest3,
}

public class Model
{
    public Dictionary<Test, string> TestDictionary { get; set; }
    public Dictionary<string, string> StringDictionary { get; set; }
    public string Other { get; set; }

    public Model()
    {
        TestDictionary = new Dictionary<Test, string>();
        StringDictionary = new Dictionary<string, string>();
    }
}

Эта форма:

<form action="/Home/Test" method="post">
    <input type="hidden" name="Model.TestDictionary[MyTest1]" value="myval" />
    <input type="hidden" name="Model.StringDictionary[mykey]" value="myval" />
    <input type="hidden" name="Model.StringDictionary[mykey2]" value="myval2" />
    <input type="hidden" name="Model.Other" value="works" />
    <button type="submit">Submit</button>
</form>

И это действие:

public ActionResult Test(FormCollection formCollection)
{
    Model model = new Model();
    TryUpdateModel(model, "Model");
    return Redirect("Index");
}

Model.StringDictionary Get успешно обновлен.
Я не могу получить Model.TestDictionary чтобы получить обновление.

Я пробовал множество способов, таких как изменение имени входа на Test.MyTest1 но не мог заставить это работать.

Как мой ввод должен выглядеть как идентификатор, который я хочу заполнить Model.TestDictionary?

1 ответ

Я нашел уродливое решение, которое работает:

<input type="hidden" name="Model.TestDictionary[0].Key" value="MyTest1" />
<input type="hidden" name="Model.TestDictionary[0].Value" value="myval" />

В любом случае, если кто-то найдет что-то лучшее, будет приятно посмотреть.

Другие вопросы по тегам