【问题标题】:Storing contents from Viewbag into a local jquery array or object将 Viewbag 中的内容存储到本地 jquery 数组或对象中
【发布时间】:2016-12-05 16:10:05
【问题描述】:

让我们想象一下这样的情况:

我有一个 ViewBag 动态对象,它基本上是一个包含一些结果的列表;

场景一:

  1. 用户 1 进来并用里面的 50 个项目的列表填充 ViewBag.Products 对象;

场景二:

  1. 用户 2 进来并用 50 个新项目的列表填充 ViewBag.Products 对象,这些新项目与用户 1 之前的 50 个项目不同。

现在,当两个用户都在他们的页面上显示结果时,该页面位于 /Analyze/Index

我启用它们,以便它们可以通过位于对象内部的某个类的某个属性来整理该列表,如下所示:

public JsonResult GetSortedBySales()
    {
        var list = lista.OrderByDescending(x => x.SaleNumber).ToList();
        return Json(list, JsonRequestBehavior.AllowGet);
    }
    public JsonResult GetSortedByFeedback()
    {
        var list = lista.OrderByDescending(x => x.Feedback).ToList();
        return Json(list, JsonRequestBehavior.AllowGet);
    }

如您所见,这会产生如下问题:

最后一个将自己的项目添加到列表中的用户是当用户 1 尝试整理列表时将显示给用户 1 的项目,因为列表现在填充了用户 #2 的项目...

列表中填满了来自 eBay API 的项目,因此我无法向每个用户保证数据的完整性和唯一性......

我以为我可以在这里做什么?是不是我可以以某种方式将列表中的这些项目存储到本地 jquery 数组中,然后从该本地数组执行排序,以便每个 jquery 数组对于浏览器中的每个用户都是本地的,并且不会混合数据...

你们明白我在这里想要实现的目标吗?

如果我的英语不好,我深表歉意,我已尽力解释我遇到的问题。

编辑:这里有更多关于我想要实现的数据

基本上,我有一个表单,用户可以根据某个关键字搜索 ebay 项目。在通过 http 请求搜索后,我向他们显示结果,他们可以在表格中选择所有这些产品,然后对这些选择的产品进行分析。

然后将它们与具有分析数据的另一个页面一起传输,并将结果显示在名为“lista”的列表对象中。

“列表”列表总是根据用户通过我刚才解释的过程在页面上搜索的内容以不同的方式填充。

因此,“lista”对象始终填充新数据,当用户对列表“lista”中的数据进行排序时,如果有 2 个用户执行我解释的场景 1 和 2 中的数据分析,它们的显示总是不同以上。

这有帮助吗?

编辑2:

这里是我所讲内容的图解说明

第 1 步:

第 2 步:

附: “lista”列表被声明为静态,这是导致问题的原因吗?

再次编辑:

好的,伙计们,我找到了一种方法,以便在对数据进行排序时不会更改数据。我没有做一个 jQuery 帖子,而是根据我添加到我的表 tr 中的两个额外属性对数据进行排序 - 销售和反馈,然后按如下方式对其进行排序:

$(".feedbackClick").click(function() {
    var $wrapper = $('#tableSellers');

    $wrapper.find('.test').sort(function(a, b) {
        return +$(b).attr('feedback') - +$(a).attr('feedback');
    }).appendTo($wrapper);
});

这会在 jQuery 中本地对数据进行排序,因此在多个用户执行搜索时不会丢失任何数据。

【问题讨论】:

  • 你的英语基本没问题。但是,您能否更详细地解释一下您想要实现的目标?
  • @ic3man7019 泰。是的...我将编辑我最初的问题
  • @ic3man7019 我用更多细节编辑了我最初的问题,这有帮助吗? :)
  • @ic3man7019 我也在问题中添加了图形步骤
  • 为什么lista被声明为static?

标签: javascript jquery asp.net arrays list


【解决方案1】:

附: “lista”列表被声明为静态,这是导致问题的原因吗?

是的。这就是问题所在。

您几乎不应该在网站中使用静态变量,因为这些变量最终会在所有用户之间共享。

【讨论】:

  • 好的,我现在明白了——我会记住这一点的。当我做一个 public static List lista {get;set;} - 当我需要使用它时,它可以在整个类/控制器中使用......但是还有什么其他方法可以在一个类中有 1 个属性可用在跨类/控制器的多个方法中??
  • 实例变量,又名Fields。
猜你喜欢
  • 1970-01-01
  • 2020-06-13
  • 2012-12-11
  • 1970-01-01
  • 2023-03-14
  • 2015-09-29
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
相关资源
最近更新 更多