オートコンプリートのソースを取得する関数を呼び出しています。私のjquery関数はコントローラーを呼び出し、コントローラーはメソッドを呼び出し、メソッドはwcfサービスを呼び出します。私の wcf サービスは、アドレスのリストを返します。ユーザーがオートコンプリートテキストボックスを使用するたびにサービスを呼び出さないようにするために、(ユーザーがビューに残っている間) 最初の呼び出しでアドレスのリストを保存する方法があるかどうかを知りたいです。私は静的リストでそれをやろうとしましたが、データベース上のアドレスのリストは変更される可能性があり、再ロードする必要があります (少なくともユーザーがビューに移動したときの最初の呼び出しで)。これが私のコードです。
オートコンプリート:
$(function () {
var availableTags = {
source: '/Address/GetAddresses/',
minLength: 4,
}
$("input.Places").live("keydown.autocomplete", function () {
$(this).autocomplete(availableTags);
});
});
コントローラ:
public ActionResult GetAddresses(string term)
{
var filteredItems = City.GetFilteredAddresses(term);
return Json(filteredItems, JsonRequestBehavior.AllowGet);
}
方法:
public static IEnumerable<string> GetFilteredAddresses(string term)
{
var items = AddressesService(); This method call a wcf service and return the list of addresses
var filteredItems = items.Where(
item => item.IndexOf(term, StringComparison.InvariantCultureIgnoreCase) >= 0
);
return filteredItems;
}