我想創建一個下拉列表,對於每個項目,在一行上列出一個代理名稱和標識,以及一些輔助信息(正如你看到在typeahead.js demo pageASP MVC 3 - 使用鍵/值對來填充typeahead.js下拉列表
我試圖從我的ASP MVC控制器的信息從我的視圖,然後顯示一條信息(代理的名字)開始簡單。第二步,當我看着Fiddler中的請求時,我可以看到我創建了一個我需要正確使用的對象的數組,然後退出控制器方法而沒有發生任何事件。那所有的t他需要的數據正在返回,並且格式正確。然而...
我已經看過幾乎所有的教程,以及我似乎無法弄清楚如何正確顯示信息。
這是我最近的嘗試。我簡化了一些事情,以便能夠在數組中循環選擇一個項目進行顯示。
查看代碼
<script src="http://code.jquery.com/jquery-1.8.3.min.js" type="text/javascript"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js" type="text/javascript"></script>
<script type="text/javascript" src="http://blattchat.com/demos/typeahead/js/bootstrap-typeahead.js"></script>
<script type="text/javascript">
$(document).ready(function ($) {
// Workaround for bug in mouse item selection
$.fn.typeahead.Constructor.prototype.blur = function() {
var that = this;
setTimeout(function() { that.hide() }, 250);
};
$('#typeahead').typeahead({
source: function (term, process) {
var url = '@Url.Content("~/Agent/GetAgents")';
return $.getJSON(url, { term: term }, function (data) {
var agents = [];
var map = {};
$.each(data, function (i, agent) {
map[agent.FirstName] = agent;
agents.push(agent.FirstName);
});
return process(agents);
});
},
select: function (event, ui) {
$.post('@Url.Action("Details","Agent")', { id: atrVal });
}
});
})
</script>
從控制器
public JsonResult GetAgents(string term)
{
term = term.ToUpper();
var lastAgents = from l in db.Agent
where l.FirstName.Contains(term) ||
l.LastName.Contains(term)
select new
{
Name = l.FirstName,
SymetraNumber = l.SymetraNumber,
};
var corp2Agents = from c in db.Agent
where c.CorporateName.Contains(term)
select new
{
Name = c.CorporateName,
SymetraNumber = c.SymetraNumber,
};
return new JsonResult()
{
Data = (lastAgents.Union(corp2Agents).ToArray()),
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
這裏的代碼是什麼通過Fiddler傳回
同樣的屏幕截圖,我不是在Visual Studio或Chrome的調試器中看到任何錯誤消息所以我想我只是不正確的jQuery