我開始學習 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
uj5u.com熱心網友回復:
public HomeController()
{
// This instantiates a new instance of JobController,
// it >>does not<< inject one from DI.
_jobRepository = new JobRepository();
}
這將忽略您的 DI 注冊設定。
而是這樣做:
// Assuming JobRepository implements IJobRepository (which it should)
// and it is registered in DI as
// services.AddSingleton<IJobRepository, JobRepository>();
public HomeController( IJobRepository jobRepository )
{
_jobRepository = jobRepository;
}
或沒有介面(我不推薦):
public HomeController( JobRepository jobRepository )
{
_jobRepository = jobRepository;
}
無關,我還建議添加空檢查
public HomeController( JobRepository jobRepository )
{
_jobRepository = jobRepository ?? throw new ArgumentNullException(nameof(jobRepository));
}
uj5u.com熱心網友回復:
每次輸入 JobRepository 時,它都會創建一個新的 List 物件,因此它將為空
如果您想要持久性,您可能需要使用資料庫和物體框架 請參閱檔案
https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/crud?view=aspnetcore-6.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/360510.html
標籤:C# 网站 asp.net-mvc asp.net-web-api
