【发布时间】:2021-12-27 10:02:58
【问题描述】:
出于实践目的,我开始学习 asp.net core MVC 我创建了一个HomeController,其中我有两种方法
[Route("[controller]/[action]")]
public class HomeController : Controller
{
private readonly JobRepository _jobRepository;
public HomeController()
{
_jobRepository = new JobRepository();
}
[HttpPost]
public IActionResult AddJob(int job)
{
return Ok(_jobRepository.AddJob(job));
}
[HttpGet]
public IActionResult GetAllJobs()
{
return Ok(_jobRepository.GetAllJobs());
}
}
我在控制器中接收数据,但问题是当数据传输到我的存储库时,我将所有作业保存在 int 列表中
public class JobRepository
{
List<int> jobs = new List<int>();
public int AddJob(int job)
{
jobs.Add(job);
return job;
}
public List<int> GetAllJobs()
{
return jobs;
}
}
数据已输入到列表中,但当我再次点击控制器时,我的列表会重新初始化,并且列表计数在即时窗口中显示为 1
【问题讨论】:
-
你能说明你在哪里以及如何使用这两个类吗?
-
第一个在 HomeController 类,第二个完全是我在这里发布的
-
每次调用 HomeController 时,都会创建一个新的 jobRepo。您应该使用依赖注入并将 JobRepo 注入 HomeController 作为单例
-
“我在 Startup 类的 ConfigureService 方法中添加了 services.AddSingleton
();” - 这不会神奇地使JobRepository成为单例,你仍然需要将其注入控制器的构造函数中。 -
不,你不是,你是用
new手动实例化它。这与注入相反。
标签: c# asp.net asp.net-mvc asp.net-web-api