我有一系列@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_'而沒有發生錯誤。 任何幫助,將不勝感激。
是什麼讓你覺得你需要改變由該方法創建的默認'id'屬性? –
因爲現在DropDownListFor()被註釋掉了,而ListBoxFor()沒有ID,所以當一個項目被選中時,腳本從不運行。儘管它使用DropDownListFor()來選擇組件是錯誤的。如何將相同的ID分配給ListBoxFor(0以便腳本可以運行?) – user616076
您的'ListBoxFor()'方法正在生成'