2013-02-13 68 views
0

我有一個有點奇怪的情況,我有動態生成表單上的字段 - 所有下拉列表。這些選擇對應於我想彙總在一起形成位掩碼的二進制值。我這樣生成下拉列表:mvc4動態生成的字段從表單丟失

<table class="center"> 
    @foreach (var field in Model.Fields) 
    { 
     <tr> 
      <td>@field.DisplayText:</td> 
      <td> 
       @Html.DropDownList(field.FieldName, new SelectList(field.Options, "FlagValue", "Text", field.SelectedValue), "(doesn't matter)")     
      </td> 
     </tr> 
    } 
</table> 

這似乎工作 - 就在視圖中呈現正確的HTML。但我的控制器沒有收到這些字段中的選擇。我試圖通過動態字段循環。

在下面的代碼中,PatientSelectorEditor是我的ViewModel。

private void GetFlagInfo(PatientSelectorEditor pse, out string description, out long flags) 
    { 
     description = null; 
     flags = 0; 

     // get list of all possible fields that could be in the view. 
     pse.Fields = InitPatientSelectorFields(0); 
     foreach (PriceFlagField field in pse.Fields) 
     {     
      foreach (var option in field.Options) 
      { 
       // was something selected here? 
       if (Request[field.FieldName].Equals(option.FlagValue)) 
       { 
        description += ", " + option.Text; 
        flags += option.FlagValue; 
       } 
      }     
     }    
    } 

是去

Request[field.Name] 

線路沒有發現在我看來,動態生成的領域。

我在做什麼錯?

+0

你擁有包括你的窗體標記內DROPDOWNLIST明確的字符串比較? – 2013-02-13 04:59:18

+0

請發佈您的完整的HTML頁面,以便我們可以更好地進行分析。 – 2013-02-13 09:37:10

回答

0

我想出了我在這裏做錯了什麼。這條線....

if (Request[field.FieldName].Equals(option.FlagValue)) 

需要這樣

if (Request[field.FieldName].Equals(option.FlagValue.ToString()))