gpt4 book ai didi

c# - 在 ASP .Net Core Web 应用程序中读取和存储静态查找数据

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

我有一个网络应用程序 (ASP .Net Core 1.1 MVC),它有一些基本的 CRUD 操作。网络应用使用网络 API 来执行所有操作。

网络应用程序有一些页面可供编辑,其中包含基本的文本框和下拉列表。一些下拉列表包含静态信息 - 例如,可能有一个包含这些值的查找表:

  1. 每日
  2. 每周
  3. 每月
  4. 每年

Web API 公开了一个端点来检索这些值。但是,我显然不想在用户每次导航到“编辑”页面时调用它。因为这是永远不会改变的静态数据,所以我想在网络应用程序启动时从 API 读取一次这个查找数据。问题是我不太确定最好的地方在哪里。我应该将 Main() 放在 Program.cs 中,还是放在 Startup.cs 中的 Startup() 中?还是应该使用 DI 来完成(不知何故……不确定会怎样)。这种情况是否有一些最佳实践?

然后下一个问题是我应该在哪里存储这些数据?我可以只创建一个静态的全局变量来保存所有查找表吗?这是适用于所有用户/ session 的数据,所以我认为基本的全局键/值对列表会很好吗?我可以从我的各种 Controller 中读取它来填充 View 中的下拉列表吗?

谢谢...只是想以正确的方式做到这一点。任何提示将不胜感激。

最佳答案

您可以将数据保存在单例中(应用程序状态数据)。你必须使用 Dependency Injection使数据对所有用户可用:

  1. 定义包含数据的服务(例如,名为 MyAppData 的类)。

    public class MyAppData
    {
    // Declare properties/methods/etc.
    }
  2. 将服务类添加到 ConfigureServices(例如 services.AddSingleton<MyAppData>();)。

  3. 在每个 Controller 中消费数据服务类:

    public class MyController : Controller
    {
    public MyController(MyAppData myService)
    {
    // Do something with the service (read some data from it,
    // store it in a private field/property, etc.)
    }
    }

您可以在文章中找到更多信息 - Introduction to session and application state in ASP.NET Core (在应用程序状态数据部分)

此外,我建议您缓存数据 - Caching .

最后,您可以使用 localStorage在前端持久化更新变化的信息。

PS:您可以在非核心网站中使用应用程序状态 - https://stackoverflow.com/a/3733549/182344 .

关于c# - 在 ASP .Net Core Web 应用程序中读取和存储静态查找数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44433350/

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