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_'を割り当てることができません。 ご協力いただければ幸いです。
このメソッドで作成されたデフォルトの 'id'属性を変更する必要があると思われる点は何ですか? –
DropDownListFor()がコメントアウトされ、ListBoxFor()がIDなしのため、アイテムが選択されるとスクリプトは実行されません。 DropDownListFor()で行ったにもかかわらず、コンポーネントの選択は間違っていました。 ListBoxFor(0)に同じIDを割り当てると、スクリプトが実行されますか? – user616076
'ListBoxFor()'メソッドは '