ASP.NET Core隐藏菜单上的数据库检查菜单

时间:2019-06-22 18:13:05

标签: c# asp.net-core-2.2

我需要根据数据库检查在侧边栏菜单中隐藏和显示一些链接,但是由于布局没有页面模型,我该如何实现?如果处理了索赔很容易,但是我需要访问数据库

using assembly System.Windows.Forms
using namespace System.Windows.Forms
[messagebox]::show('hello world')

2 个答案:

答案 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
}