1

在回复的帮助下,我将代码更改为

@Html.TextBoxFor(per => per.Hospital, new { style = "width:220px", @maxlength = "50", data_autocomplete = Url.Action("HospitalList", "Person") })

我的jQuery是

$(document).ready(function () {        
    $('input[data_autocomplete]').each(function () {
        var url = $(this).data('autocomplete');
        $(this).autocomplete({
            source: function (request, response) {
                $.getJSON(url, {
                    term: request.term
                }, response);
            }
        });
    });
});

并创建了一个新的 Action 结果

 public ActionResult HospitalList(string term)
    {
        List<string> result = new List<string>();
        result.Add("Hospital 1");
        result.Add("NYUMC");
        result.Add("Christ");
        result.Add("Bellevue");
        result.Add("NewYork-Presbyterian");
        result.Add("North Central Bronx Hospital");            

        return Json(result , JsonRequestBehavior.AllowGet);
    }  

现在我要去哪里wromg。我只看到一个文本框,没有自动完成的行为。我是否应该包含任何 jquery 库以使其正常工作

4

1 回答 1

0

您还没有显示您正在使用哪个自动完成插件。如果是,jQuery UI autocomplete您可以从控制器操作中将过滤后的结果作为 JSON 返回:

[HttpGet]
public ActionResult PersonSearch(string term)
{
    // The term parameter will contain the value entered by the user in the textbox.
    // here you could use it and query your database in order to filter the results.
    string[] result = new string[]
    {
        "filtered value 1",
        "filtered value 2",
        "filtered value 3",
        "filtered value 4",
    };

    return Json(result, JsonRequestBehavior.AllowGet);
}

最后,您将附加插件:

$(function() {
    $('input[data-autocomplete]').each(function() {
        var url = $(this).data('autocomplete');
        $(this).autocomplete({
            source: function(request, response) {
                $.getJSON(url, {
                    term: request.term
                }, response);
            }
        });
    });
});

请注意控制器操作如何获取term参数并应返回 JSON 格式的字符串列表。

于 2013-04-05T17:39:17.713 回答