ASP MVC5 public readonly变量值不应该更改

时间:2017-10-20 06:17:39

标签: c# asp.net asp.net-mvc-5 controller action

对于我的应用程序(用于管理客户的某些数据),我有一个public static class Util,我存储了在各种地方使用的数据。在这个课程中,我有以下变量:

public static readonly List<string> PUBLICSALESMANAGERS = new List<string> { "aaaaa", "bbbbb", "ccccc", "ddddd", "eeeee" };

这是每个案例中相同的人员列表。然后,根据您尝试管理的客户,需要将该客户的销售经理添加到列表中。

在我的一个控制器中,我在一些操作中有以下几行代码:

List<string> salesManagers = Util.PUBLICSALESMANAGERS;
salesManagers.Insert(0, customer.SalesManager);
ViewBag.salesManagers = salesManagers;

出于某种原因,每次运行此代码时,插入似乎都在更新Util.PUBLICSALESMANAGERS变量。因此,列表在每个请求上都会变得越来越长,但情况并非如此。

有没有人可以帮我这个? 提前谢谢!

修改

避免尝试并避免混淆一个如何工作的例子:

当我加载客户x时,它有销售经理&#34; sssss&#34;。我的列表现在应该是:"sssss", "aaaaa", "bbbbb", "ccccc", "ddddd", "eeeee"

然后我加载客户y,其中有销售经理&#34; mmmmm&#34;我希望我的列表看起来像:"mmmmm", "aaaaa", "bbbbb", "ccccc", "ddddd", "eeeee"

等等......

1 个答案:

答案 0 :(得分:0)

List(T).Insert(Int32,T)在第一个参数指定的位置插入一个项目。它不会被覆盖。你想要的是像

  if (!salesManagers.Contains(customer.SalesManager))
    salesManagers.Insert(0, customer.SalesManager);

更新:在澄清问题之后,要做的就是创建Util.PUBLICSALESMANAGERS列表的副本并修改它。

new List(Util.PUBLICSALESMANAGERS)