在页脚中显示数据库名称

时间:2018-06-13 09:18:05

标签: c# asp.net-mvc entity-framework asp.net-core

我希望能够从dbContext显示数据库名称。我试图将它作为ViewBag传递但是当我更改页面时它会从页脚中消失。

当我尝试将其作为视图模型传递时,应用程序在我更改页面时崩溃。

private readonly DBContext _context;

public HomeController(DBContext context)
{
    _context = context;
}

public IActionResult Index()
{
    var dbString = _context.Database.GetDbConnection().Database; 

    return View(new BaseViewModel { DatabaseName = dbString });
}

我的BaseViewModel类只是一个带有DatabaseName

的字符串属性

然后在我的页脚中

@using Project.Models.ViewModels;
@model BaseViewModel;
<footer class="app-footer">
    <div class="ml-auto">
        <span style="font-weight: bold;">
           @Model.DatabaseName 
        </span>
    </div>
</footer>

实现这一目标的最佳方法是什么?我的布局页面中也有@using Project.Models.ViewModels和@model BaseViewModel。

1 个答案:

答案 0 :(得分:1)

可以通过多种方式完成: 1.您可以将数据库名称存储在应用程序状态中。在global.asax / startup文件的Application_Start()方法中,您可以调用一个方法在应用程序状态中设置DbName,如下所示:

protected void Application_Start()
{
    System.Web.HttpContext.Current.Application.Lock();
    System.Web.HttpContext.Current.Application["DbName"] = //call method to set db name;
    System.Web.HttpContext.Current.Application.UnLock();
}

它可以在应用程序中的任何地方使用System.Web.HttpContext.Current.Application [&#34; DbName&#34;]

  1. 使用Html.RenderAction的部分视图:
  2. 在其中创建一个BaseController和一个操作方法。在此操作方法中,获取上面的数据库名称并从中返回部分视图。在该局部视图中编写html以返回一个简单的字符串作为数据库名称

    对此操作方法使用OutputCache和ChildActionAttribute属性来缓存数据库名称并仅将其用作部分视图。

    现在,在您的布局页面中,使用@ {Html.RenderAction(&#34; actionName&#34;,new {controller =&#34; name&#34;});}代替@Model渲染此局部视图。页脚中的DatabaseName