mvc を使用して Web サイトの機能を入力すると、検索を実装しています。
私のコントローラーは Searchstring パラメーターを受け入れ、それに応じてレコードを返します。
私がしているのは、このjavascriptを使用してコントローラーをdivに呼び出すことです:
$("#SearchField").keyup(function (event) {
$.ajax({
cache: false,
url: 'FolderList?searchString=' + $("#SearchField").val(),
success: function (data) {
$('#FolderList').empty().html(data);
}
});
});
これが私のコントローラーコードです:
public ActionResult Search(string searchString, int? page)
{
var folders = db.Folders.AsQueryable();
if (!String.IsNullOrEmpty(searchString))
{
folders = folders.Where(p => p.SearchField.ToLower().Contains(searchString.ToLower()));
}
int pageSize = Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["FolderPageSize"]);
int pageNumber = (page ?? 1);
return View(folders.ToPagedList(pageNumber, pageSize));
}
問題は、コントローラー (フォルダー) 内で要求したデータベース エンティティの読み込みが非常に遅いことです (データベースの問題)。機能を入力すると検索が大幅に遅れ、まったく使用できなくなります。それは私が対処しなければならないソースで解決できない問題です。
だから私の質問: フォルダ データベース エンティティをメモリにロードする方法はありますか? そのため、ページをロードするのに時間がかかりますが、コントローラを呼び出すたびに高速になります。または、これを達成する方法が間違っていますか? 別の方法はありますか?