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" />
В любом случае, если кто-то найдет что-то лучшее, будет приятно посмотреть.