我在asp.net mvc3应用程序中搜索了一个关键字。服务器端具有自动完成功能的文本框是此处的主要项目。但问题是,由于服务器端缓存,使用相同应用程序的2个用户将获得另一个用户的搜索结果。这是我的服务器端编码..
function AutoComplete() {
AccessService({ url: "/Home/AutoFill",
type: "GET",
asyncAction: false,
contentType: "application/json",
dataType: "json",
success: function (data) {
var inputArray = data.workOrderNos.split('ß');
$('#txt_keyword').autocomplete({
source: inputArray,
minLength: 1
});
}
});
}
在HomeController中:
public JsonResult AutoFill()
{
string _workOrderNos = _iManagePropertyMaintenances.GetAllWorkOrderNumbers(); //Will retrieve all values
return Json(new { workOrderNos = _workOrderNos }, JsonRequestBehavior.AllowGet);
}
如何通过客户端进行自动完成和搜索?这样不同的用户得到自己的搜索条件的结果??
private string UserViceSearchCriteriaName = "WorkOrderSearchCriteria" ;
public ActionResult ViewWorkOrders(string criteria)
{
if (criteria != "")
{
if (HttpContext.Cache[UserViceSearchCriteriaName] != null)
HttpContext.Cache[UserViceSearchCriteriaName] = criteria;
else
HttpContext.Cache.Add(UserViceSearchCriteriaName, criteria, null, Cache.NoAbsoluteExpiration, new TimeSpan(1, 0, 0), CacheItemPriority.Normal, null);
ViewData["WorkOrderSearchCriteria"] = HttpContext.Cache[UserViceSearchCriteriaName].ToString();
}
}
这样我们就会跟踪标准(文本框中的值)