当您使用 mvc 为网站键入功能时,我正在实现搜索。
我的控制器接受一个 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));
}
问题是我在控制器(文件夹)中请求的数据库实体加载非常缓慢(数据库问题)。当您键入功能时,它会使搜索滞后很多,并且根本不可用。这是一个我无法从源头上解决的问题,我必须处理它。
所以我的问题是:有没有办法在内存中加载文件夹数据库实体,所以加载页面需要很长时间,但每次调用控制器之后都会很快。还是我实现这一目标的方式错了?还有其他方法吗?