2016-05-10 70 views
0

我有一系列@Html組件動態構建,包括ListBoxFor()。與其他人一起,我給了他們一個ID,然後我使用它來填充稱爲inputvalues的模型值,該值在每個組件的值發生變化時保存它們的值。這很好,但我不得不爲ListBoxFor()更改原始的DropDownListFor(),但儘管新的語法有效,但我無法像以前那樣爲其分配ID值而不會出現語法錯誤。該代碼看起來是這樣的..無法獲得正確的語法@ Html.ListBoxFor()

@if (Model != null) 
{ 
    @Styles.Render(BundleConfig.Styles_MultiSelect) 

    IEnumerable<SelectListItem> filetypes = from filetype in Model.ListOptions 
    select new SelectListItem 
    { 
     Value = filetype.ID.ToString(), 
     Text = filetype.Name, 
     Selected = Model.SelectedListOptionID == null ? false : Model.SelectedListOptionID > 0 
    }; 

    <div class="editor-section"> 
     <div class="label"> 
      @Html.DisplayEditLabel(Model.Label, Model.Required.Value) 
     </div> 
     <div class="field large-text-field"> 
      @*Original drop down replaced by ListBoxFor() but with ID 
      @Html.DropDownListFor(m => m.SelectedListOptionID, new SelectList(Model.ListOptions, "ID", "Name", Model.SelectedListOptionID).OrderBy(l => l.Value), new Dictionary<string, object>{ 
       {"id", "personField_" + Model.ID}})*@ 

      @Html.ListBoxFor(m => m.ListOptions, filetypes, new { @class = "multiselectFileTypes" }) 
     </div> 
    </div> 
}  
@Scripts.Render(BundleConfig.Scripts_MultiSelect) 
<script> 
    $("#personField_" + "@Model.ID").change(function() { 
     cnt++; 

     var uploadValue = JSON.stringify({ 
      "id": "@Model.ID", 
      "order": cnt, 
      "required": "@Model.Required", 
      "libraryUploadConfigType": 3, 
      "customFieldTypeID": 5, 
      "selectedListOptionID": $(this).val() 
     }); 

     inputValues = inputValues + uploadValue; 
    }); 


    $(".multiselectFileTypes").multiselect({ 
     noneSelectedText: 'All Options', 
     minWidth: 230, 
     selectedList: 6 
    }); 
</script> 

雖然原來DropDownlistFor語法()工作,並更新inputvalues組件沒有工作。將它更改爲ListBoxFor()組件後,我似乎無法分配ID'personField_'而沒有發生錯誤。 任何幫助,將不勝感激。

+0

是什麼讓你覺得你需要改變由該方法創建的默認'id'屬性? –

+0

因爲現在DropDownListFor()被註釋掉了,而ListBoxFor()沒有ID,所以當一個項目被選中時,腳本從不運行。儘管它使用DropDownListFor()來選擇組件是錯誤的。如何將相同的ID分配給ListBoxFor(0以便腳本可以運行?) – user616076

+0

您的'ListBoxFor()'方法正在生成'