【问题标题】:list array not changing in model list列表数组在模型列表中没有变化
【发布时间】:2019-01-15 11:05:13
【问题描述】:

一切正常,但经过身份验证处理后 _humans 列表没有改变。最后一个必须将令牌添加到列表数组中。

我的列表数组

public List<Human> _humans = new List<Human>
{
  new Human ( 1,"test","false","asd" )
};

-- 非工作方法:

[HttpGet]
public async Task<IActionResult> register( Human employee)
{
  ....
  await HttpContext.SignInAsync(principles);

  humans.Add(new Human(22,"ASDDD","AAS",employee.token));

  return RedirectToAction("Index","Home");
}

【问题讨论】:

  • 你用的是EF,还是_human只是一个本地的List
  • 当我访问 index() 时,homecontroller 文件中的本地列表会向数组添加值,但使用 register() 时不会添加到列表中
  • 它的基本公共列表组件没有 EF
  • 在哪里检查列表是否发生了变化?
  • 在另一个方法中。在 getvalues() 方法中,我尝试使用 jsonresult 获取值,但列表不受影响

标签: c# .net asp.net-mvc


【解决方案1】:

this 回答中所述,将为每个请求构建一个新的控制器实例。因此,对于每个请求,都会创建一个新列表,并且添加到其中的所有内容都将在请求结束时丢失。

要持久化您的数据,您应该将其序列化到数据库或文件中。您也可以创建列表static,但是当应用程序重新启动时,数据仍然会丢失。

【讨论】:

  • 我可以把静态列表放在哪里?
  • 通过将public List&lt;Human&gt; _humans = ... 更改为public static List&lt;Human&gt; _humans = ...
  • @barron 他是对的!您可以将关键字 static 放在 public 修饰符之后。
  • 这很可能会解决您的问题。但是,它也可能产生其他问题。静态列表为not threadsafe
  • 确实如此,我建议您研究一下实体框架之类的东西。
猜你喜欢
  • 2020-12-13
  • 1970-01-01
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多