ASP.NET MVC JQuery Автозаполнение TextBox не работает - PullRequest
0 голосов
/ 22 мая 2018

У меня есть список студентов, и я пытаюсь реализовать панель автозаполнения.

Вот мои методы контроллера

[HttpPost]
public ActionResult SearchForStudents(StudentViewModel studentViewModel)
{
    return PartialView("_StudentListTable", 
_repository.GetStudentViewModel(studentViewModel.SearchStudent));
}

public JsonResult AutoComplete(string term)
{
    var model = _repository.FetchGeneralStudentSearchResult(term);
    return Json(model, JsonRequestBehavior.AllowGet);
}

Метод SearchForStudents вызывается при поискесделано (эта часть работает хорошо).Теперь часть, которая не работает, является методом автозаполнения.Этот метод должен вызываться каждый раз, когда пользователь вводит что-то в поле поиска.Но он не вызывается .. когда-либо ..

Вот мой вид бритвы

@using Bulletin.Models
@model Bulletin.Models.StudentViewModel

@using (Ajax.BeginForm("SearchForStudents", "Admin", null, new AjaxOptions {             
HttpMethod = "POST", InsertionMode = InsertionMode.Replace, UpdateTargetId =         
"StudentTableList" }))
{
    @Html.TextBoxFor(model => model.SearchStudent, "", new { @type = 
"string", @data_autocomplete_source = Url.Action("AutoComplete") })
    <input type="submit" name="searchbt" value="Search" />
}

<hr />
<div id="StudentTableList">
    @Html.Partial("_StudentListTable")
</div>


@section Scripts{
    <script src="~/Scripts/jquery-3.3.1.js"></script>
    <script src="~/Scripts/jquery-ui-1.12.1.js"></script>
    <script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
    <script src="~/Scripts/MonScript.js"></script>
}

А вот файл "MonScript.js", предположительно отвечающий за обнаружение ввода и вызовmethod

$(function () {
    $("input[data-autocomplete-source]").each(function () {
        var target = $(this);
        target.autocomplete({ source: target.attr("data_autocomplete_source") });
    });
});

Итак, мой вопрос, я думаю, почему он не работает, и как я могу это исправить?Заранее благодарю за любую помощь: D

РЕДАКТИРОВАТЬ: Вот что бритва интерпретируется как

<form action="/Admin/SearchForStudents" data-ajax="true" data-ajax- 
method="POST" data-ajax-mode="replace" data-ajax-update="#StudentTableList" 
id="form0" method="post">
    <input data-autocomplete-source="/Admin/AutoComplete" id="SearchStudent" 
     name="SearchStudent" type="string" value="" />    
    <input type="submit" name="searchbt" value="Search" />
</form>

РЕДАКТИРОВАТЬ 2: Консоль браузера отправляет мне исключение

Uncaught TypeError: this.source is not a function
    at $.(anonymous function).(anonymous function)._search 
(http://localhost:49741/Scripts/jquery-ui-1.12.1.js:6015:8)
    at $.(anonymous function).(anonymous function)._search 
(http://localhost:49741/Scripts/jquery-ui-1.12.1.js:144:25)
    at $.(anonymous function).(anonymous function).search 
(http://localhost:49741/Scripts/jquery-ui-1.12.1.js:6007:15)
    at $.(anonymous function).(anonymous function).search 
(http://localhost:49741/Scripts/jquery-ui-1.12.1.js:144:25)
    at $.(anonymous function).(anonymous function).<anonymous> 
(http://localhost:49741/Scripts/jquery-ui-1.12.1.js:5988:10)
    at handlerProxy (jquery-ui-1.12.1.js:641)
...