如何解决无法在 Razor Pages 代码隐藏类中使用注入类
我有一个简单的页面,它只显示电影列表。我将 DbContext
注入我的页面:
List.cshtml
@inject MovieContext Db
并尝试在代码隐藏类中使用它:
List.cshtml.cs
public class ListModel : PageModel
{
public IList<Movie> Movies { get; set; }
public async Task OnGetAsync()
{
Movies = await Db.Movies.ToListAsync();
}
}
但是,我收到错误:
名称“Db”在当前上下文中不存在
我也尝试用 [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:未将对象引用设置为对象的实例。
解决方法
你只需要在代码隐藏类中直接使用依赖注入即可,如下图。
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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。