gpt4 book ai didi

c# - 使用 c# linq 一次填充/加载列表以提高性能

转载 作者:太空狗 更新时间:2023-10-29 22:29:59 24 4
gpt4 key购买 nike

我正在开发 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com