Javascript Asp.net Mvc中用于多个项目(如stackoverflow标记搜索部分)的自动完成文本框
我尝试获取多个项目的自动完成文本框 我的看法是Javascript Asp.net Mvc中用于多个项目(如stackoverflow标记搜索部分)的自动完成文本框,javascript,jquery,asp.net-mvc-4,autocomplete,Javascript,Jquery,Asp.net Mvc 4,Autocomplete,我尝试获取多个项目的自动完成文本框 我的看法是 $(function () { var availableTags = Html.Raw(Json.Encode(ViewBag.movies)); function split(val) { return val.split(/,\s*/); } function extractLast(term) { return split(term).pop();
$(function () {
var availableTags = Html.Raw(Json.Encode(ViewBag.movies));
function split(val) {
return val.split(/,\s*/);
}
function extractLast(term) {
return split(term).pop();
}
$("#tags")
// don't navigate away from the field on tab when selecting an item
.bind("keydown", function (event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).data("ui-autocomplete").menu.active) {
event.preventDefault();
}
})
.autocomplete({
minLength: 0,
source: function (request, response) {
response($.ui.autocomplete.filter(
availableTags, extractLast(request.term)));
},
@using (@Html.BeginForm())
{
<b>Search Movie</b>
@Html.TextBox("tags", null, new { id = "tags" })
@* @Html.TextBoxFor(m => m.nam, new { id = "txtSearch", name = "SearchTerm" })*@
}
$(函数(){
var availableTags=Html.Raw(Json.Encode(ViewBag.movies));
功能拆分(val){
返回val.split(/,\s*/);
}
功能提取最后(学期){
返回拆分(term.pop();
}
$(“#标签”)
//选择项目时不要离开选项卡上的字段
.bind(“键控”,函数(事件){
如果(event.keyCode===$.ui.keyCode.TAB&&
$(this.data(“ui自动完成”).menu.active){
event.preventDefault();
}
})
.自动完成({
最小长度:0,
来源:功能(请求、响应){
响应($.ui.autocomplete.filter(
availableTags,extractLast(request.term));
},
@使用(@Html.BeginForm())
{
搜索电影
@TextBox(“tags”,null,新的{id=“tags”})
@*@Html.TextBoxFor(m=>m.nam,new{id=“txtSearch”,name=“SearchTerm”})*@
}
我的控制器操作方法如下所示
public JsonResult GetMovieNames(string term)
{
List<string> mnames = db.Movienames(term).ToList();
var rows = mnames.ToArray();
ViewBag.movies = rows;
return Json(mnames, JsonRequestBehavior.AllowGet);
}
publicjsonresult GetMovieNames(字符串术语)
{
List mnames=db.Movienames(term.ToList();
var rows=mnames.ToArray();
ViewBag.movies=行;
返回Json(mnames,JsonRequestBehavior.AllowGet);
}
如何将movienames(即字符串列表)传递给javascript中的可用标记。
在输出中,它显示home/movienames。但我需要将电影名称列表放入可用标记中。对需要自动完成功能的元素应用
class
属性,并使用以下代码。检查
检查完整的代码示例
$( ".className" ))
.autocomplete({
source: function( request, response ) {
$.getJSON( "search.php", {
//cosntruct it
}, response );
}
更新:如果使用MVC,只需将search.php
更改为\Controller\search
下面是为autocomplete构建基于JSON的输出的示例代码
public JsonResult Search(string term)
{
List<Records> recs = new List<Records>();
var rows = recs.ToArray();
return Json(rows, JsonRequestBehavior.AllowGet);
}
publicjsonresult搜索(字符串术语)
{
列表记录=新列表();
var rows=recs.ToArray();
返回Json(rows,JsonRequestBehavior.AllowGet);
}
我使用mvc.so来代替我需要在jquery网站中使用的search.php(我是指操作方法)。autocomplete({minLength:0,source:function(request,response){response($.ui.autocomplete.filter(availableTags,extractLast(request.term));},我需要将字符串数组从控制器传递到视图(在“availableTags”中)我需要传递数据库值)。如何传递?感谢您的响应…@user3145484,将其保存在ViewBag中并传递。我也尝试了该方法。“var availableTags=Html.Raw(Json.Encode(ViewBag.movies));”无效