0

我正在使用 MVC 4 和 Entity Framework 来开发 Intranet Web 应用程序。根据我的观点,我必须实现自动完成功能。为此,我正在使用 Bootstrap Typeahead。我试图通过我的动作(所以我的函数)来提供输入元素,但它似乎不起作用。

这是我的操作结果,它返回一个 Json :

public ActionResult AutoComplete(string term)
{
    var result = db.Persons.Where(p => p.FirstName.ToLower().Contains(term.ToLower()) || p.LastName.ToLower().Contains(term.ToLower())).ToList().Select(p => p.FullName).ToList();

    return Json(result, JsonRequestBehavior.AllowGet);

}

我的观点和我的脚本:

@model IEnumerable<BuSIMaterial.Models.Person>

@{
    ViewBag.Title = "Index";

}


<link href="/Content/PagedList.css" rel="stylesheet" type="text/css" />


<h2>Index</h2>


<input type="text" class="typeahead" data-provide="typeahead">



@section Scripts
{
    @Scripts.Render("~/bundles/jqueryval")
    @Scripts.Render("~/bundles/jqueryui")
    @Styles.Render("~/Content/themes/base/css")

        $(".typeahead").typeahead({
            source: function (query, process) {
                var persons = [];
                map = {};

                // This is going to make an HTTP post request to the controller
                return $.post('/Person/AutoComplete', { query: query }, function (data) {

                    // Loop through and push to the array
                    $.each(data, function (i, person) {
                        map[person.Name] = person;
                        map[person.F]
                        persons.push(country.Name);
                    });

                    // Process the details
                    process(countries);
                });
            },
            updater: function (item) {
                var selectedShortCode = map[item].ShortCode;

                // Set the text to our selected id
                $("#details").text("Selected : " + selectedShortCode);
                return item;
            }
        });


    </script>
}

在我的母版页中,我调用了 Bootstrap jquery 文件。知道发生了什么吗?

4

0 回答 0