C# jQuery自动完成隐藏的渲染结果

C# jQuery自动完成隐藏的渲染结果,c#,jquery,asp.net-mvc,C#,Jquery,Asp.net Mvc,我试图在jQuery中使用autocomplete小部件,但是当我开始键入时,它下面什么也没有显示。我可以看出它在做些什么,因为当我键入时,我可以看到页面上的滚动条随着列表变短而改变,但我看不到结果。我的代码如下。任何帮助都将不胜感激 我的控制器方法如下所示: public ActionResult GetUsers(string query) { var empName = from u in HomeModel.CombineNames()

我试图在jQuery中使用autocomplete小部件,但是当我开始键入时,它下面什么也没有显示。我可以看出它在做些什么,因为当我键入时,我可以看到页面上的滚动条随着列表变短而改变,但我看不到结果。我的代码如下。任何帮助都将不胜感激

我的控制器方法如下所示:

public ActionResult GetUsers(string query)
    {
        var empName = from u in HomeModel.CombineNames()
                      where u.StartsWith(query)
                      select u.Distinct().ToArray();
        return Json(empName);
    }
<script type="text/javascript">
$(document).ready(function() {
    $("input#autocomplete").autocomplete({
        source: function(request, response) {
            $.ajax({
                url: '/Home/GetUsers',
                type: "POST",
                dataType: "json",


                data: { query: request.term },
                success: function(data) {
                    response($.map(data, function(item) {
                        return { label: item, value: item };
                    }));
                }
            });
        }
    });
})
</script>
<input  type="text" id = "autocomplete"/>
我的观点是这样的:

public ActionResult GetUsers(string query)
    {
        var empName = from u in HomeModel.CombineNames()
                      where u.StartsWith(query)
                      select u.Distinct().ToArray();
        return Json(empName);
    }
<script type="text/javascript">
$(document).ready(function() {
    $("input#autocomplete").autocomplete({
        source: function(request, response) {
            $.ajax({
                url: '/Home/GetUsers',
                type: "POST",
                dataType: "json",


                data: { query: request.term },
                success: function(data) {
                    response($.map(data, function(item) {
                        return { label: item, value: item };
                    }));
                }
            });
        }
    });
})
</script>
<input  type="text" id = "autocomplete"/>

尝试使用浏览器的检查工具检查滚动条正在更改的区域。如果元素存在,您可能需要对CSS进行一些更改,以使文本颜色与背景颜色不同或出现其他与显示相关的问题。

您缺少一些内容,例如渲染项、缓存管理

代码应该是这样的:假设您的操作返回一个字符串数组

var cache = {},lastXhr;
            $( "input#autocomplete" ).autocomplete({
                minLength: 4,
                source: function (request, response) {
                    var term = request.term;
                    if (term in cache) {
                        response(cache[term]);
                        return;
                    }
                    var descripcion = new Array();
                    peticion = $.getJSON('/Home/GetUsers',{ query: request.term }, function (data, status, xhr) {
                        for (d in data) {
                            descripcion.push(data[d]);
                        }
                        cache[term] = descripcion;
                        if (xhr === peticion) {
                            response(descripcion);
                        }
                    });
                },
                select: function( event, ui ) {
                    $("input#autocomplete" ).val( ui.item);
                    return false;
                }
            })
            .data( "autocomplete" )._renderItem = function( ul, item ) {
                return $( "<li></li>" )
                    .data( "item.autocomplete", item )
                    .append( "<a>" + item +  " </a>" )
                    .appendTo( ul );
            };

我从页面中删除了CSS以进行检查,但仍然存在相同的问题。谢谢您的帮助。当我尝试实现它时,它说_renderItem为null或未定义。您使用的是哪个版本的jquery和jquery ui?jquery 1.7.1和jquery ui 1.8.20I与jquery 1.4有相同的错误,在更新到1.8时得到解决