Asp.net mvc ASP.NET:如何从Dropdownlist到自动完成
我有一个dropdownlist,希望使用jquery将其转换为自动完成 下拉列表如下所示,可以正常工作: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添加了一个自动完成字段。但到目前为止,我只能用虚拟数据填
@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缓存中面临的问题。任何帮助都会很好。