Мой ответ: могу ли я в любом случае связать свойство IDictionary с помощью лямбда-выражений, как это было сделано в MVC 2 для простых свойств?
Я знаю, как связать IDictionary, используя старую нотацию MVC через пути свойств строки. Но все остальные свойства модели во всем приложении работают с использованием нового подхода MVC 2 через лямбда-выражения. И поэтому мне крайне не хотелось бы применять старую манеру привязки модели.
Я также увидел статью Привязка модели к списку , опубликованную Филом Хааком в своем блоге. Но в этой статье Фил показывает, как сделать связывание, используя лямбды только для списков, а не для дикрионариев. Я пытался сделать то же самое с типизированными словарем свойствами, но DefaultModelBinder их не распознает.
Пример:
привязка:
<%= Html.TextBoxFor(model => model.DictionaryProperty[key].Title)%>
рендеринг HTML это:
<input id="DictionaryProperty_one__Title" name="DictionaryProperty[one].Title" type="text" value="" />
Буду признателен за любые полезные советы.
UPD: был указан индекс для свойства словаря, упомянутого выше, конечно:
вид:
<%= Html.Hidden("DictionaryProperty.index",key)%>
рендеринг HTML:
<input id="DictionaryProperty_index" name="DictionaryProperty.index" type="hidden" value="one" />