适用于MVC 5模型的Typeahead.js

我刚刚使用Typeahead.js为MVC 5 Models包装器实现了预先输入function

http://timdwilson.github.io/typeahead-mvc-model/

一切正常但我只是想弄清楚如何设置建议下拉列表中显示的项目数量的限制。 javascript就是这个

$('#scrollable-dropdown-menu .typeahead').typeahead(null, { name: 'countries', limit: 10, -----> limit set here source: countries }); 

但我不知道mvc模型包装器如何实现这个,有三个重载,其中一个有’AdditionalViewdata’可能这是什么需要? 没有我可以找到的文档,似乎没有其他人这样做(在下拉列表中看起来默认为5)我的后端机制IS返回超过5个结果,它只是没有反映在html中

 @Html.AutocompleteFor(model => model.Organisation.Org, model => model.Organisation.ORGID, "Autocomplete", "Organisation", false, new { htmlAttributes = new { @class = "form-control" } }) 

有人可以帮忙吗?

关键是使用linq“Take”

这有效:1)在控制器中创建一个动作并设置RouteConfig以启动此动作

 public class HomeController : Controller { public ActionResult Index20() { MyViewModel m = new MyViewModel(); return View(m); } 

创建没有任何类型母版页的视图添加此视图模型:

 public class MyViewModel { public string SourceCaseNumber { get; set; } } 

转到管理Nuget包或PM控制台并添加到MVC 5项目 – Tim Wilson的MVC 5模型的Typeahead.js将添加的HtmlHelpers.cs的命名空间更改为System.Web.Mvc.Html并重建添加此类:

 public class CasesNorm { public string SCN { get; set; } } 

将这些方法添加到您的控制器:

 private List _AutocompleteSourceCaseNumber(string query) { List sourceCaseNumbers = new List(); try { //You will goto your Database for CasesNorm, but if will doit shorthand here //var results = db.CasesNorms.Where(p => p.SourceCaseNumber.Contains(query)). // GroupBy(item => new { SCN = item.SourceCaseNumber }). // Select(group => new { SCN = group.Key.SCN }). // OrderBy(item => item.SCN). // Take(10).ToList(); //take 10 is important CasesNorm c1 = new CasesNorm { SCN = "11111111"}; CasesNorm c2 = new CasesNorm { SCN = "22222222"}; IList aList = new List(); aList.Add(c1); aList.Add(c2); var results = aList; foreach (var r in results) { // create objects Autocomplete sourceCaseNumber = new Autocomplete(); sourceCaseNumber.Name = string.Format("{0}", r.SCN); sourceCaseNumber.Id = Int32.Parse(r.SCN); sourceCaseNumbers.Add(sourceCaseNumber); } } catch (EntityCommandExecutionException eceex) { if (eceex.InnerException != null) { throw eceex.InnerException; } throw; } catch { throw; } return sourceCaseNumbers; } public ActionResult AutocompleteSourceCaseNumber(string query) { return Json(_AutocompleteSourceCaseNumber(query), JsonRequestBehavior.AllowGet); } throw; } catch { throw; } return sourceCaseNumbers; } public ActionResult AutocompleteSourceCaseNumber(string query) { return Json(_AutocompleteSourceCaseNumber(query), JsonRequestBehavior.AllowGet); } 

学分转到http://timdwilson.github.io/typeahead-mvc-model/