過去 2 日間、javascript を使用してドロップダウン リストの新しい項目が選択されたときに、チェックボックス リストを動的に更新する方法を見つけようとしていました。
ドロップダウンリストからドロップダウンリストに更新する必要がある1週間前に同じことをしました。
これまでに得たもの:
意見
@using (Html.BeginForm())
{
@Html.DropDownListFor(x => x.User, (IEnumerable<SelectListItem>)Model.UserList, "-- vælg bruger --")
if (Model.checkboxlist != null)
{
for (var i = 0; i < Model.checkboxlist.Count; i++)
{
<div class="editor-label">
@Html.CheckBoxFor(c => Model.checkboxlist[i].check)
@Html.LabelFor(c => Model.checkboxlist[i].Id, Model.checkboxlist[i].Id)
@Html.HiddenFor(c => Model.checkboxlist[i].Id)
</div>
}
}
}
<script type="text/javascript">
$('#User').change(function () {
alert('HEJ!');
var selectedUser = $(this).val();
alert(selectedUser);
if (selectedUser != null && selectedUser != '-- vælg bruger --' && selectedUser != '') {
$.getJSON('@Url.Action("getPdfCheckBoxList","Admin")', { username: selectedUser },
function (employee) {
var checkboxlist = $('#checkboxlist');
checkboxlist.empty();
$.each(employee, function (index, employee) {
checkboxlist.append($('<checkbox/>', {
checked = 'false'
}));
});
});
}
});
</script>
ビューをロードしているとき Model.checkboxlist が null であるため、ドロップダウンリスト項目以外のモデルには何も返されません。
コントローラーアクション:
public ActionResult getPdfCheckBoxList(String username)
{
MethodService service = new MethodService();
var list = new List<PDFCheckBoxList>();
foreach (var pdfCheckBoxList in getPDFFileNames(username))
{
list.Add(new PDFCheckBoxList { check = false, Id = pdfCheckBoxList });
}
return Json(list, JsonRequestBehavior.AllowGet);
}
現在、Alert("HEJ") でさえクビにならず、理由がわかりません... 助けてください。