【发布时间】:2017-04-21 08:08:28
【问题描述】:
我知道我的问题已在论坛中发布,但我没有找到可行的解决方案。我确定我做错了什么,但我找不到。
这是一个测试代码,它可以工作并从数据表中返回一个列表
<TestMethod()> Public Sub ObtientNomsRestaurants()
Dim q = From c In dal.ObtientNomsRestaurants() 'As IQueryable of Resto
For Each resto In q
Console.WriteLine(resto.Nom)
Next
End Sub
现在在我的控制器中,我调用 dal 方法并尝试从我的数据表列“Nom”中返回所有以参数“Prefix”开头的元素
<HttpPost>
Public Function TagSearch(Prefix As String) As JsonResult
Dim q = From c In dal.ObtientNomsRestaurants().Where(Function(m) m.Nom.StartsWith(Prefix)).Select(Function(m) New With {.Name = m.Nom}).ToList
Return Json(q, JsonRequestBehavior.AllowGet)
End Function
在我看来,要完成,我有一个输入文本框,其中“标签”作为 id 还有这个自动完成
<script type="text/javascript">
$(function () {
$("#tags").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Home/TagSearch",
type: "POST",
dataType: "json",
data: { Prefix: request.term },
success: function (data) {
response($.map(data, function (item) {
return { label: item.Name, value: item.Name };
}))
}
})
},
messages: {
noResults: "", results: ""
}
});
});
</script>
编辑: 所以现在我编辑我的控制器,这正在工作
<HttpPost>
Public Function TagSearch(Prefix As String) As JsonResult
'Dim ObjList = dal.ObtientTousLesRestaurants()
Dim ObjList As New List(Of Resto)() From {
New Resto() With {.Id = 4, .Nom = "Latur"},
New Resto() With {.Id = 5, .Nom = "Mumbai"},
New Resto() With {.Id = 6, .Nom = "Pune"},
New Resto() With {.Id = 7, .Nom = "Delhi"},
New Resto() With {.Id = 8, .Nom = "Dehradun"},
New Resto() With {.Id = 9, .Nom = "Noida"},
New Resto() With {.Id = 10, .Nom = "New Delhi"}
}
Dim Nom = (From N In ObjList Where N.Nom.StartsWith(Prefix) Select New With {N.Nom})
Return Json(Nom, JsonRequestBehavior.AllowGet)
End Function
但是如果我使用 dal 方法来获取数据库数据,它就不起作用。无论哪种方式,ObjList 都是一个恢复列表。
【问题讨论】:
-
请您告诉我们您正在寻找的没有发生的行为吗?
-
我是 vb 的新手,我正在寻找的行为是带有自动完成餐厅名称的文本框字段。我有一个餐厅名称为 Nom 的餐厅。我所拥有的是一个没有任何自动完成或错误的文本框
-
您是否调试过您的代码以查看您的 VB 方法是否返回了数据?
-
是的,前缀值 = "L"; TagSearch 值是 Nothing 而 q 值也不是
-
您可以从这里link 下载项目,只需更改连接字符串。谢谢你的帮助
标签: jquery ajax asp.net-mvc vb.net jquery-ui