Некоторое время назад я пытался передать данные словаря из моего представления в мой контроллер. И я смог сделать это после поиска в сети (помните, что это был один из постов Скотта Хансельмана). Решение, которое у меня было, было что-то вроде
<%for(int index=0; index<Model.Count(); index++){
var property= Model.ElementAt(index);%>
<input type="hidden" name="<%="properties["+index+"].Key"%>"/>
<input type="hidden" name="<%="properties["+index+"].Value"%>"/>
<%}%>
public ActionResult Process(IDictionary<string,string> properties)
{
doSomething();
return View();
}
Код работал некоторое время, а затем я провел некоторый рефакторинг и избавился от этого куска кода. Сегодня я столкнулся с ситуацией, в которой я хотел бы снова передать словарь. Но как бы я ни старался, параметр properties , полученный действием, всегда был нулевым. Я попробовал приведенный выше код и
<%for(int index=0; index<Model.Count(); index++){
var property= Model.ElementAt(index);%>
<input type="hidden" name="<%="properties.Keys["+index+"]"%>"/>
<input type="hidden" name="<%="properties.Values["+index+"]"%>"/>
<%}%>
Ни один код не работал. Я снова погуглил, но не смог найти пост, который помог мне раньше. Может кто-то указать, что я сделал не так? спасибо миллион.
Обновление : Оказалось, что проблема в том, что сгенерированный HTML-код не имеет непрерывно увеличивающихся индексов. Например, я получал свойства [0], свойства [1], свойства [3] ... (свойства [2] отсутствовали). Итак, firebug будет вашим лучшим другом при возникновении подобных проблем.