Fab*_*uez 1 c# web-applications asp.net-core-mvc
我有一个Web应用程序(ASP .Net Core 1.1 MVC),它具有一些基本的CRUD操作。该Web应用程序使用Web API进行所有操作。
该Web应用程序具有一些页面供编辑,其中包含基本文本框和下拉列表。一些下拉列表包含静态信息-例如,可能存在具有以下值的查找表:
Web API公开了一个端点来检索这些值。但是,我显然不想每次用户导航到“编辑”页面时都调用此函数。由于这是永远不变的静态数据,因此我想在Web应用程序启动时从API读取一次此查询数据。问题是我不确定执行此操作的最佳位置。我应该将Main()放在Program.cs中,还是放在Startup.cs中的Startup()中?还是应该使用DI来完成(以某种方式...不确定如何发生)。这种情况下有一些最佳做法吗?
然后下一个问题是我应该在哪里存储这些数据?我可以只创建一个包含所有查找表的静态全局变量吗?这是适用于所有用户/会话的数据,所以我认为基本的全局键/值对列表会很好吗?我可以从各种控制器中读取此信息,以在视图中填充下拉列表?
谢谢...只是想以正确的方式做。任何提示将非常感谢。
您可以将数据保存为单例(应用程序状态数据)。您必须使用依赖注入使数据可用于所有用户:
定义包含数据的服务(例如,名为MyAppData的类)。
public class MyAppData
{
// Declare properties/methods/etc.
} 
将服务类添加到ConfigureServices(例如services.AddSingleton<MyAppData>();)。
在每个控制器中使用数据服务类:
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.)
   }
} 
您可以在文章-ASP.NET Core中的会话和应用程序状态简介(在“ 应用程序状态数据”部分中)中找到更多信息。
另外,我建议您缓存数据-Caching。
最后,您可以在前端使用localStorage来存储更新的信息。
PS: -你可以在非核心的网站上使用的应用程序状态/sf/answers/261348461/。
| 归档时间: | 
 | 
| 查看次数: | 1566 次 | 
| 最近记录: |