2016-05-10 8 views
0

ListBoxFor()を含む動的に構築された一連の@Htmlコンポーネントがあります。他のものではIDを与えてから、入力値と呼ばれるモデル値を入力するためにIDを使用します。この値は、変更されるたびに各コンポーネントの値を保持します。これはうまくいきますが、元のDropDownListFor()をListBoxFor()に変更しなければなりませんでしたが、新しい構文は機能しますが、構文エラーを出さずにID値を割り当てることはできません。元DropDownlistFor(の構文が、コードは次のようになります。..@ 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> 

)働いて、コンポーネントが動作しませんでしたinputvaluesを更新しました。 ListBoxFor()に変更してもコンポーネントは動作しますが、エラーが発生することなくID 'personField_'を割り当てることができません。 ご協力いただければ幸いです。

+0

このメソッドで作成されたデフォルトの 'id'属性を変更する必要があると思われる点は何ですか? –

+0

DropDownListFor()がコメントアウトされ、ListBoxFor()がIDなしのため、アイテムが選択されるとスクリプトは実行されません。 DropDownListFor()で行ったにもかかわらず、コンポーネントの選択は間違っていました。 ListBoxFor(0)に同じIDを割り当てると、スクリプトが実行されますか? – user616076

+0

'ListBoxFor()'メソッドは '