Показать имя базы данных в нижнем колонтитуле - PullRequest
0 голосов
/ 13 июня 2018

Я хочу иметь возможность отображать имя базы данных из 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 голосов
/ 13 июня 2018

Это можно сделать несколькими способами: 1. Вы можете сохранить имя базы данных в состоянии приложения.В методе Application_Start () файла global.asax / startup-файла вы можете вызвать метод для установки DbName в Application State, как показано ниже:

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 [ "DbName"]

Использовать частичные представления с Html.RenderAction:

Создать в нем BaseController и один метод действия.В этом методе действия получите имя базы данных, как указано выше, и верните частичное представление из него.В этом частичном представлении напишите html, чтобы вернуть простую строку в качестве имени базы данных

Используйте атрибуты OutputCache и ChildActionAttribute в этом методе действия, чтобы кэшировать имя базы данных и использовать его только как частичное представление.

Теперь вваша страница макета отображает это частичное представление, используя @ {Html.RenderAction ("actionName", new {controller = "name"});} вместо @ Model.DatabaseName в нижнем колонтитуле

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...