我正在开发 ASP.NET MVC 4.5 应用程序。我需要在下拉列表中填充一个列表。它工作正常,无论如何,当我单击该字段时,总是有一个服务器请求。
我想在客户端初始加载后存储这些值以加速应用程序。
我正在使用 ViewModel 来填充我的 Razor View 中的列表。
你知道如何实现 this 的初始加载吗?
这是我的数据源 Controller :
public JsonResult GetBusinessLineList(string id = null, string query = null)
{
return
Json(Db.BusinessLine.AsQueryable()
.Where(x => x.Label.Contains(query))
.Take(10)
.Select(x => new { id = x.BusinessLineId, text = x.Label })
.ToList(),
JsonRequestBehavior.AllowGet);
}
Razor View :
<div class="form-group">
@Html.LabelFor(model => model.BusinessLineIdList, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.Select2AjaxFor(model => model.BusinessLineIdList, @Url.Action("GetBusinessLineList", "DataSource"),
new { @class = "form-control"))
</div>
</div>
非常感谢和亲切的问候!
最佳答案
你可以尝试使用输出缓存:
[OutputCache(Location = OutputCacheLocation.Client, VaryByParam = "id;query", Duration = 3600)]
public JsonResult GetBusinessLineList(string id = null, string query = null)
{
return Json(Db.BusinessLine.AsQueryable()
.Where(x => x.Label.Contains(query))
.Take(10)
.Select(x => new { id = x.BusinessLineId, text = x.Label })
.ToList(),
JsonRequestBehavior.AllowGet);
}
OutputCacheLocation.Client
- 指定您只想在客户端缓存结果。还有其他可用选项。
VaryByParam = "id;query"
- 需要根据方法参数来区分缓存结果。
Duration
- 以秒为单位的缓存持续时间。
关于c# - 使用 c# linq 一次填充/加载列表以提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43117301/