C# 为什么不是';我的select2自动完成方法没有被执行吗?
我正在尝试在我的ASP.NETMVC4网站的主布局上实现 我希望它在用户开始键入(至少2个字母)后,立即调用我的方法,使用用户已经键入的字母查询数据库。除了,当我开始输入时,我的方法从未被调用。我输入了一些警报,我能够看到我输入的内容,但我想select2没有启动 以下是标签中的脚本和css引用:C# 为什么不是';我的select2自动完成方法没有被执行吗?,c#,javascript,jquery,asp.net-mvc,jquery-select2,C#,Javascript,Jquery,Asp.net Mvc,Jquery Select2,我正在尝试在我的ASP.NETMVC4网站的主布局上实现 我希望它在用户开始键入(至少2个字母)后,立即调用我的方法,使用用户已经键入的字母查询数据库。除了,当我开始输入时,我的方法从未被调用。我输入了一些警报,我能够看到我输入的内容,但我想select2没有启动 以下是标签中的脚本和css引用: <script src="/Content/select2/select2.js"></script> <link href="/Content/select2/sele
<script src="/Content/select2/select2.js"></script>
<link href="/Content/select2/select2.css" rel="stylesheet" />
以下是my layout.cshtml文件中的搜索框:
<div class="navbar-header hidden-xs pull-right" style="padding-top: 10px; margin-left: 10px;">
<input id="search" class="form-control" placeholder="Search..." type="text" data-autocomplete-url="/Home/AutoFillValues" />
</div>
这是我布局页面的底部,select2内容出现在这里:
<script src="/Scripts/jquery-1.9.1.min.js"></script>
<script src="/Scripts/bootstrap.min.js"></script>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryui")
@Scripts.Render("~/bundles/jqueryval")
@RenderSection("scripts", required: false)
<script type="text/javascript">
$(document).ready(function () {
$("#search").select2({
placeholder: "Search...",
minimumInputLength: 2,
ajax: {
url: "~/Home/AutoFillSearch",
dataType: 'jsonp',
data: function(search) {
return {
q: search
};
},
results: function(search, page) {
return { results: data.Results };
}
}
});
});
</script>
@Scripts.Render(“~/bundles/jquery”)
@Scripts.Render(“~/bundles/jqueryui”)
@Scripts.Render(“~/bundles/jqueryval”)
@RenderSection(“脚本”,必需:false)
$(文档).ready(函数(){
$(“#搜索”)。选择2({
占位符:“搜索…”,
最小输入长度:2,
阿贾克斯:{
url:“~/Home/AutoFillSearch”,
数据类型:“jsonp”,
数据:功能(搜索){
返回{
问:搜索
};
},
结果:功能(搜索,页面){
返回{results:data.results};
}
}
});
});
最后,这里是我的控制器方法(我还不担心这里的代码,我只想看到我的断点在第一行被击中…):
public ActionResult自动填充值()
{
//让所有的摔跤手和所有的队伍
var players=\u playerRepo.Query()。其中(w=>w.Division==“Division I”&&w.Conference!=null);
var schools=players.Select(w=>w.School.Distinct();
ArrayList=新建ArrayList();
foreach(学校中的var学校)
{
var hyperlinkFormat=“”;
//@HttpUtility.UrlEncode(Model.Team.Name、System.Text.Encoding.UTF8)
添加(string.Format(hyperlinkFormat,string.Format(罗斯特路径,学校),string.Format(罗斯特文本,学校));
}
foreach(玩家中的var玩家)
{
var hyperlinkFormat=“”;
//@HttpUtility.UrlEncode(Model.Team.Name、System.Text.Encoding.UTF8)
添加(string.Format(hyperlinkFormat,string.Format(RosterPath,player.School),string.Format(RosterText,player.School));
}
返回Json(list.ToArray());
}
我必须升级到jQuery 2.1(因为版本1.9和.live/.on函数存在问题),才能启动select2
现在我只需要将我的select2设置为styled…您是否在控制台中看到任何消息。我曾经有一个“onkeydown”事件来测试它,这是我在字段中键入时唯一一次发生任何事情。现在没有发生任何事件。当我第一次打开控制台窗口时,出现一个错误,上面写着:“uncaughttypeerror:undefined不是一个函数”,它将它抛出jquery-unobtrusive-ajax.js行115尝试修复它,看看它是否解决了您的问题。如果该错误出现在select 2字段上,则可能导致异常行为$([a[data ajax=true]).live(“单击”,函数(evt){evt.preventDefault();异步请求(this,{url:this.href,键入:“GET”,数据:[]};})@drneel今晚我将尝试更新jquery,因为这就是我发布的上述评论/错误的问题。。。
public ActionResult AutoFillValues()
{
// Get all wrestlers and all teams
var players = _playerRepo.Query().Where(w => w.Division == "Division I" && w.Conference != null);
var schools = players.Select(w => w.School).Distinct();
ArrayList list = new ArrayList();
foreach (var school in schools)
{
var hyperlinkFormat = "<a href=\"{0}\">{1}</a>";
//@HttpUtility.UrlEncode(Model.Team.Name, System.Text.Encoding.UTF8)
list.Add(string.Format(hyperlinkFormat, string.Format(RosterPath, school), string.Format(RosterText, school)));
}
foreach (var player in playerss)
{
var hyperlinkFormat = "<a href=\"{0}\">{1}</a>";
//@HttpUtility.UrlEncode(Model.Team.Name, System.Text.Encoding.UTF8)
list.Add(string.Format(hyperlinkFormat, string.Format(RosterPath, player.School), string.Format(RosterText, player.School)));
}
return Json(list.ToArray());
}