gpt4 book ai didi

c# - MVC - 保留模型结果以用于 ajax 方法而不通过 JSON 传入?

转载 作者:太空宇宙 更新时间:2023-11-03 14:49:33 25 4
gpt4 key购买 nike

潜伏已久第一次发帖,嘿嘿!

TL:DR - 我如何将原始页面加载 Controller 的值保存到 ajax 方法,而不将其作为 ajax 请求的一部分作为 json 对象传递?而且我不能使用 Session[]!

背景故事 - 我正在开发一个过滤器搜索功能,它会在初始页面加载时返回一大堆对象,这些对象是通过数据库调用生成的,并填充到 Model.FullResults 中。

为了过滤结果,而不是在每次点击过滤器时继续进行更多的数据库调用,我只是在 AJAX 方法中通过 linq 过滤结果,如下所示:

var fullResults = @Html.Raw(Json.Encode(Model.FullResults));
var obj = {
//filter tickboxes statuses etc are here
fullResults: fullResults
}
var jqxhr = $.ajax({
//urls etc removed for clarity
data: JSON.stringify(obj),
success: function (response) {
//stuff
}
}

});

对于较小的 Model.FullResults 值,这一切都工作得很好。但是,如果 Model.FullResults 非常大(即在我的主搜索页面上),那么每次都要通过 ajax 传递大量数据,这也是我传递它的唯一原因通过这种方式只是为了简单明了的事实,我不知道我还能如何“保留”原始 Controller 操作中的这些数据并仍然使用 ajax 方法。

在 Session 中存储 Model.FullResults 是一个简短的想法,但人们很可能会打开多个点击同一 Controller 的选项卡,从而使 session 过时。像 Viewdata 这样的东西是理想的,但我当然无法在 ajax 方法中访问它。

那么我如何保留这个值以供在 ajax 方法中使用呢?我是否必须求助于进行另一个数据库调用或将其传递给 ajax 方法?一定有办法以某种方式保留它吗?

提前感谢你们的帮助! :)

最佳答案

您可以使用 memoryCache 来保存大量数据。类似的问题是我必须从 csv 文件读取数据并通过 Web API 传递。每次从文本中读取数据都不是一个好主意,所以我将数据保存在内存缓存中并从 memoryCache 中获取记录以避免从流中读取。我的 github 帐户上显示了一个简单的演示。您可以关联它。 https://github.com/abhee235/SimpleRestfulAPI/tree/master/DataProvider

注意:该项目并未针对性能进行优化。这只是一个演示。

关于c# - MVC - 保留模型结果以用于 ajax 方法而不通过 JSON 传入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52372090/

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