javascript - JQuery UI 自动完成未到达 ActionResult C# MVC

标签 javascript c# jquery jquery-ui autocomplete

我已经阅读了很多关于相同问题的帖子,但都没有帮助,所以对重复的问题表示歉意:(我已经按照 JQueryUI 网站上的简单示例进行了硬编码值和自动完成工作,但我需要它来 self 的数据库。

查看:

@Html.TextBoxFor(model => model.Position, new { @type = "text", @id = "jobtitle", @name = "jobtitle", @placeholder = "Job Title" })

JS:

编辑:我在成功时添加了警报,正在调用警报,但没有数据(即没有从数据库中提取数据)

<script>
$(function () {
            $("#jobtitle").autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: '@Url.Action("JobsAutoFill", "Account")',
                        data: {
                            Prefix: request.term
                        },
                        success: function (data) {
                            alert(data);
                            response(data);
                        }
                    });
                },
                minLength: 1
            });

            //$("#jobtitle").autocomplete({
            //    source: "/Account/JobsAutoFill/"
            //});
        });
</script>

我已经添加了所需的链接:

<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

下面是我的 ActionResult(实际上是一个 JsonResult)和用于拉取作业列表的函数:

    public List<Jobs> GetAllJobs()
    {
        List<Jobs> JobsList = new List<Jobs>();

        using (RBotEntities EF = new RBotEntities())
        {
            var JobsListQuery = (from ED in EF.EmploymentDetails
                                   select new
                                   {
                                       ED.pkiEmploymentDetailID,
                                       ED.Position
                                   });

            foreach (var item in JobsListQuery)
            {
                JobsList.Add(new Jobs
                {
                    Id = item.pkiEmploymentDetailID,
                    Name = item.Position
                });
            }
        }

        return JobsList;
    }

public JsonResult JobsAutoFill(string Prefix)
        {
            //Note : you can bind same list from database  


            List<Jobs> ObjList = new List<Jobs>();

            ObjList = GetAllJobs();

            //Searching records from list using LINQ query  


            var JobNames = (from N in ObjList
                            where N.Name.StartsWith(Prefix)
                            select new { N.Name });
            return Json(JobNames, JsonRequestBehavior.AllowGet);
        }

我是不是遗漏了什么或做错了什么?

感谢任何帮助,谢谢!

最佳答案

我成功了!

导致问题的第一件事是我需要在 ActionResult 上方添加 [AllowAnonymous]。

其次,我将我的 Ajax 调用更改为:

$(function () {
    $("#jobtitle").autocomplete({
        source: function (request, response) {
            $.ajax({
                url: '@Url.Action("JobsAutoFill", "Account")',
                data: {
                    Prefix: request.term
                },
                success: function (data) {
                    response($.map(data, function (obj) {
                        return {
                            label: obj.Name,
                            value: obj.Name
                        };
                    }));
                }
            });
        },
        minLength: 1
    });
});

下面是我的 ActionResult。我添加了一个更改来区分大小写:

[AllowAnonymous]
public JsonResult JobsAutoFill(string Prefix)
{
    //Note : you can bind same list from database  


    List<Jobs> ObjList = new List<Jobs>();

    ObjList = GetAllJobs();

    //Searching records from list using LINQ query  


    var JobNames = (from N in ObjList
                    where N.Name.ToLower().StartsWith(Prefix.ToLower())
                    select new { N.Name });
    return Json(JobNames, JsonRequestBehavior.AllowGet);
}

关于javascript - JQuery UI 自动完成未到达 ActionResult C# MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42268569/

相关文章:

javascript - 使用 IterableDiffer 在 Angular 8 中获取数组大小更改

javascript - 如何通过代码在迷你图中显示工具提示

jquery - 使用远程数据加载语义 UI 下拉列表

javascript - 如何保存排序顺序?

c# - 如何处理表格标题右键单击

c# - 遍历 StartDate 和 EndDate 之间的每一天

c# - 我如何使用类库的 App.config 中的连接字符串?

javascript - 在日期选择器中选择后禁用日期

javascript - 如何查看两个图像源是否相等?

javascript - 在选择选项上使用 .remove() (不使用 jQuery)