Я пытаюсь сделать множественный выбор, используя Jquery пользовательский интерфейс со следующим кодом,
Проблема: Я пытался получить данные из базы данных, используя JsonResult, но по какой-то причине скрипт json в view не может прочитать список в отличие от его жестко запрограммированного в массиве, который обрабатывается плавно.
Я использовал тот же метод контроллера, чтобы передать результат в сценарий автозаполнения по умолчанию без множественного выбора, он работает.
Проблема только в том, что сценарий множественного выбора не определяет Json результат
Любая помощь приветствуется!
C# контроллер:
public JsonResult GetEmp(string term)
{
MyDatabaseContext db = new MyDatabaseContext();
List<string> emp;
emp= db.users.Where(user => user.PrimaryID.StartsWith(term)).Select(y => y.PrimaryID).ToList();
return Json(emp, JsonRequestBehavior.AllowGet);
}
Просмотр:
<div class="form-group">
@Html.LabelFor(model => model.emp, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.emp, new { htmlAttribute3424434e c324es = new { @class = "form-control", @id = "tags" } })
@Html.ValidationMessageFor(model => model.emp, "", new { @class = "text-danger", @id = "tags" })
</div>
</div>
<script>
$(function () {
var availableTags = '@Url.Action("GetEmp")'
function split(val) {
return val.split(/,\s*/);
}
function extractLast(term) {
return split(term).pop();
}
$("#tags")
// don't navigate away from the field on tab when selecting an item
.on("keydown", function (event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).autocomplete("instance").menu.active) {
event.preventDefault();
}
})
.autocomplete({
minLength: 0,
source: function (request, response) {
// delegate back to autocomplete, but extract the last term
response($.ui.autocomplete.filter(
availableTags, extractLast(request.term)));
},
focus: function () {
// prevent value inserted on focus
return false;
},
select: function (event, ui) {
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(ui.item.value);
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(", ");
return false;
}
});
});
</script>