Asp.net mvc ASP.NET:如何从Dropdownlist到自动完成

Asp.net mvc ASP.NET:如何从Dropdownlist到自动完成,asp.net-mvc,Asp.net Mvc,我有一个dropdownlist,希望使用jquery将其转换为自动完成 下拉列表如下所示,可以正常工作: @Html.DropDownListFor(m => m.CategoryID, new SelectList(Model.Categories, "ID", "Name", Model.CategoryID), "Categories", new { @class = "form-control" }) 我还使用jquery添加了一个自动完成字段。但到目前为止,我只能用虚拟数据填

我有一个dropdownlist,希望使用jquery将其转换为自动完成

下拉列表如下所示,可以正常工作:

@Html.DropDownListFor(m => m.CategoryID, new SelectList(Model.Categories, "ID", "Name", Model.CategoryID), "Categories", new { @class = "form-control" })
我还使用jquery添加了一个自动完成字段。但到目前为止,我只能用虚拟数据填充它:

$(function () {
    var availableTags = [
      "ActionScript",
      "AppleScript",
      "Asp"
    ];

    $("#tags").autocomplete({
        source: availableTags 
    });
});
如何使用下拉列表中可用的数据填充下拉列表字段


提前谢谢你

您需要将
source
设置为一个操作方法,该方法返回您希望以JSON格式显示为自动完成选项的数据

$(function(){

    $("#tags" ).autocomplete({
      source: "@Url.Action("SearchCategories","Home")",
      minLength: 1,
      select: function (event, ui) {

        //If you want to do something on the select event, you may do it here
        //$("#tags").html(ui.item.label);
      }
    });

})
确保在HomeController中有一个名为
SearchCategories
的操作方法,该方法可返回所需的数据

public ActionResult SearchCategories(string term)
{
    var db= new MyDbContext();
    var results = db.Categories.Where(s => s.Name.StartsWith(term))
                                       .Select(x=>new {  id =x.Id, 
                                                         label =x.Name }).ToList();
    return Json(results,JsonRequestBehavior.AllowGet);
}

假设您的页面中正确加载了jQuery ui库(及其依赖项),并且页面中没有任何其他脚本错误,则这将启用对id为
标记的输入的自动完成。我使用了
Url.Action
helper方法来生成操作方法的正确相对Url。如果您的js代码在razor视图中,那么它可以正常工作。但是,如果您的代码位于外部js文件中,则应遵循中描述的方法。

抱歉!你的问题是什么?是否要使用类别列表中的数据填充“自动完成”文本框?您是否尝试过远程数据源示例?是的,完全正确。现在我有下拉列表,但我想用一个自动完成文本框替换它。基础数据应该是相同的。谢谢!这很好用。起初,我希望我可以将整个列表传递给视图,但您的方法正是按照我所希望的方式工作的,并且比传递整个列表更灵活。您好,如果可能的话,您能否回答我在asp mvc缓存中面临的问题。任何帮助都会很好。