无法在 Razor Pages 代码隐藏 class 中使用注入 class

Can't use injected class in Razor Pages code-behind class

我有一个只显示电影列表的简单页面。我将 DbContext 注入我的页面:

List.cshtml

@inject MovieContext Db

并尝试在代码隐藏中使用它 class:

List.cshtml.cs

public class ListModel : PageModel
{
    public IList<Movie> Movies { get; set; }

    public async Task OnGetAsync()
    {
        Movies = await Db.Movies.ToListAsync();
    }
}

但是,我收到错误消息:

The name 'Db' does not exist in the current context

我也试过用 [Inject] 属性注入上下文,但这也不起作用:

public class ListModel : PageModel
{
    public IList<Movie> Movies { get; set; }

    // Inject context
    [Inject] public MovieContext Db { get;set; }

    public async Task OnGetAsync()
    {
        Movies = await Db.Movies.ToListAsync();
    }
}

我收到以下错误:

NullReferenceException: Object reference not set to an instance of an object.

只需要在后台代码中直接使用依赖注入class,如下图

public class ListModel : PageModel
    {
        private readonly MovieContext _context;
        public ListModel(MovieContext context)
        {
            _context = context;
        }
        public IList<Movie> Movies { get; set; }

        public async Task OnGetAsync()
        {
            Movies = await _context.Movies.ToListAsync();
        }
    }

详情请见doc.