我需要根据数据库检查在侧边栏菜单中隐藏和显示一些链接,但是由于布局没有页面模型,我该如何实现?如果处理了索赔很容易,但是我需要访问数据库
using assembly System.Windows.Forms
using namespace System.Windows.Forms
[messagebox]::show('hello world')
答案 0 :(得分:1)
您可以使用viewmodel或HttpContext
答案 1 :(得分:1)
由于您要尝试在布局(不包含模型)中进行数据库操作,因此Dependency Injection可以为您提供帮助。
您可以定义一个具有具有数据库访问权限的方法的类,将其注册到您的服务中,然后在任何View / Controller / pageModel中轻松使用它的方法
我将用代码解释:
这是我们的依赖项:
public class MyDependency
{
// You can use dependency injection in a chained fashion,
// DBContext is injected in our dependency
private readonly DBContext _dbContext;
public MyDependency(DBContext dbContext)
{
_dbContext = dbContext;
}
// Define a method that access DB using dbContext
public bool CheckInDb()
{
return dbContext.SomeCheck();
}
}
将其注册到您的Startup
中的服务中(您的依赖项应在注册DBContext之后注册)
public void ConfigureServices(IServiceCollection services)
{
// Some code here
services.AddDbContext<DBContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddScoped<MyDependency>();
}
然后在您的布局中:
@inject MyDependency MyDependency
@if(MyDependency.CheckInDb())
{
// Do something
}
else
{
// Do something else
}