C# 初学者:自动完成不起作用?
我正在尝试创建一个自动完成文本框。 这就是我的想法 @型号….C# 初学者:自动完成不起作用?,c#,jquery,asp.net-mvc,autocomplete,C#,Jquery,Asp.net Mvc,Autocomplete,我正在尝试创建一个自动完成文本框。 这就是我的想法 @型号…. @{ ViewBag.Title=“创建”; Layout=“~/Views/Shared/_Layout.cshtml”; } @using(Html.BeginForm("Action","Controller")) { @Html.TextBoxFor(m=>m.myEmail) } @section Scripts{ @Scripts.Render("~/Scripts/jquery-ui-1.10.4
@{ ViewBag.Title=“创建”; Layout=“~/Views/Shared/_Layout.cshtml”; }
@using(Html.BeginForm("Action","Controller"))
{
@Html.TextBoxFor(m=>m.myEmail)
}
@section Scripts{
@Scripts.Render("~/Scripts/jquery-ui-1.10.4.min.js")
<script type="text/javascript">
$(function() {
$("#myEmail").
autocomplete({
source: '/App/Per',
minLength: 1,
}
);
});
</script>
}
例如,在浏览器中,当我检查chrome中的元素并检查响应时,我会得到值
0: "Person1"
1: "Person2"
2: "Person3"
3: "Person4"
问题
我的自动完成框没有填充这些数据。难道我不应该在文本框的底部有一个上面有名字的列表框吗
编辑2:生成的HTML
创建-我的ASP.NET应用程序
创造
$(函数(){
$(“#我的邮件”)。
自动完成({
来源:“/App/Per”,
最小长度:1,
}
);
});
除了CSS链接放错了位置外,没有什么东西看起来特别差。您可能希望尝试将JSON的格式设置为稍微不同的格式,这也会产生回答上一个问题的效果
与此相反:
public JsonResult Person(string term)
{
var persons = FindPersons(term,"bkc@example.com","bk").ToArray();
var fullnameList = persons.Select(person => person.FirstName + " " + person.LastName).ToList();
return Json(fullnameList, JsonRequestBehavior.AllowGet);
}
尝试使用:
public JsonResult Person(string term)
{
var persons = FindPersons(term,"bk@example.com","bk").ToArray();
return Json(persons.Select(p => new { label = p.FirstName + " " + p.LastName, value = p.Email }), JsonRequestBehavior.AllowGet);
}
这是API说该小部件将处理的结果之一:Javascript控制台中是否存在可以共享的错误?是否正确添加了对js的引用?没有Javascript错误,我将截图显示浏览器中加载的文件。你还为jQuery UI引用了CSS主题文件吗?@TiesonT。不,我没有,也许这就是问题所在。我应该在哪里引用它?在我的jquery-ui.js部分的末尾或之后,我的直觉或多或少是正确的:小部件没有正确解析JSON。看起来很奇怪,但是生活就是这样。
public JsonResult Person(string term)
{
var persons = FindPersons(term,"bkc@example.com","bk").ToArray();
var fullnameList = persons.Select(person => person.FirstName + " " + person.LastName).ToList();
return Json(fullnameList, JsonRequestBehavior.AllowGet);
}
public JsonResult Person(string term)
{
var persons = FindPersons(term,"bk@example.com","bk").ToArray();
return Json(persons.Select(p => new { label = p.FirstName + " " + p.LastName, value = p.Email }), JsonRequestBehavior.AllowGet);
}