2013-12-17 30 views
2

我使用ASP.Net MVC 4並結合有多個重複字段的字典列表的形式,使用方法上菲爾哈克的博客中解釋:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/綁定到字典包括額外的「索引」鍵

這裏是我的標記部分:

<tbody> 
      <tr> 
       <td><input type="text" name="RowName[0]" /></td> 
       <td><input type="hidden" name="SlotDefs.Index" value="Mon|0" /><input type="hidden" name="SlotDefs[Mon|0].Sequence" value="0" /><input type="number" name="SlotDefs[Mon|0].Count" /></td> 
       <td><input type="hidden" name="SlotDefs.Index" value="Tue|0" /><input type="hidden" name="SlotDefs[Tue|0].Sequence" value="1" /><input type="number" name="SlotDefs[Tue|0].Count" /></td> 
       <td><input type="hidden" name="SlotDefs.Index" value="Wed|0" /><input type="hidden" name="SlotDefs[Wed|0].Sequence" value="2" /><input type="number" name="SlotDefs[Wed|0].Count" /></td> 
       <td><input type="hidden" name="SlotDefs.Index" value="Thu|0" /><input type="hidden" name="SlotDefs[Thu|0].Sequence" value="3" /><input type="number" name="SlotDefs[Thu|0].Count" /></td> 
       <td><input type="hidden" name="SlotDefs.Index" value="Fri|0" /><input type="hidden" name="SlotDefs[Fri|0].Sequence" value="4" /><input type="number" name="SlotDefs[Fri|0].Count" /></td> 
      </tr> 
... 

在所有的有20 SlotDefs形式,他們確實會綁定到IDictionary<string, SlotDefinitionModel>,該控制器接收到模型中。但是,集合中還有一個額外的元素,其中鍵爲「Index」並且爲空值。那是爲什麼?在處理其餘數據之前,我必須將其過濾掉。有沒有辦法阻止它?

+0

是否使用''偶然?只是好奇。 – damienc88

+0

我正在使用'

回答

1

我從來沒有嘗試過綁定到一個IDictionary對象,但我認爲,這「索引」鍵從

<input type="hidden" name="SlotDefs.Index" value="Mon|0" /> 

來到您可以刪除這個領域,像你預期會發生的結合。

<tbody> 
    <tr> 
     <td><input type="text" name="RowName[0]" /></td> 
     <td><input type="hidden" name="SlotDefs[Mon|0].Sequence" value="0" /><input type="number" name="SlotDefs[Mon|0].Count" /></td> 
     <td><input type="hidden" name="SlotDefs[Tue|0].Sequence" value="1" /><input type="number" name="SlotDefs[Tue|0].Count" /></td> 
     <td><input type="hidden" name="SlotDefs[Wed|0].Sequence" value="2" /><input type="number" name="SlotDefs[Wed|0].Count" /></td> 
     <td><input type="hidden" name="SlotDefs[Thu|0].Sequence" value="3" /><input type="number" name="SlotDefs[Thu|0].Count" /></td> 
     <td><input type="hidden" name="SlotDefs[Fri|0].Sequence" value="4" /><input type="number" name="SlotDefs[Fri|0].Count" /></td> 
    </tr> 

...