我在NamesModel中有一个方法,它获取所有名称并返回一个名称列表:
public static List<NamesModel> GetAllNames()
{
List<NamesModel> names = new List<NamesModel>();
//
// code to fetch records
//
return names;
}
在我的控制器中:
public ActionResult Index()
{
NamesModel model = new NamesModel();
model.GetAllNames();
return View(model);
}
在视图中,我有一个文本框:
@Html.TextBox("search-name")
现在在我的javascript中,我想从模型(从方法)或从控制器获取所有名称变量,例如:
<script type="text/javascript">
$(function () {
var names = ...........
$(document).ready(function () {
$('#search-name').autocomplete({
source: names
});
});
});
</script>
如果我使用硬编码然后它可以工作,但我想使用存储在数据库中的名称。有可能吗?
硬编码示例:
var names = ["abc", "xyz"];
答案 0 :(得分:1)
您可以将Ajax和Json用于此
对于您的控制器:
[HttpPost]
public JsonResult GetAllNames()
{
List<NamesModel> names = new List<NamesModel>();
//
// code to fetch records
//
return Json(names);
}
或者进行调试,以便在浏览器中查看json:
public JsonResult GetAllNames()
{
List<NamesModel> names = new List<NamesModel>();
//
// code to fetch records
//
var result = Json(names);
result .JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return result ;
}
(注意这实际上是jquery但是因为你使用了document.ready你已经包含了jquery)
你的javascript中的调用上面的方法:
$.getJSON(@Url.Content("~/ControllerName/GetAllNames/"), function (result) {
var ListWithNames = data;
});
答案 1 :(得分:0)
“source”选项属性可以是一个字符串,指向返回json数据的URL(http://api.jqueryui.com/autocomplete/#option-source)
答案 2 :(得分:0)
我的问题的最佳解决方案是在此博客中:http://theycallmemrjames.blogspot.co.uk/2010/03/jquery-autocomplete-with-aspnet-mvc.html
感谢所有试图帮助我的人。