【发布时间】:2018-11-22 19:34:23
【问题描述】:
我希望能够从 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。
【问题讨论】:
-
您还没有解释为什么它会崩溃,顺便说一下,这将是因为数据库名称和/或模型没有在每个控制器操作上填充。一个简单的搜索会带你到以下问题 - stackoverflow.com/questions/13225315/…
-
我已经遵循...所有视图模型的基础
-
您已经继承了base,但是您需要在每个控制器操作中设置数据库名称,或者找到另一种填充数据库名称和模型的方法。否则,请在答案中提供更多信息,因为现在没有任何有用的信息 - 只是“我正在这样做,我有问题”
-
将数据库名称放在每个控制器中是愚蠢的。这就是为什么我要求更好的方法。
-
从安全角度来看这是个好主意吗?也许您应该使用一些用户友好的名称来标识 DB,而不是 SQL Server 中出现的实际 DB 名称。通常,您不应在网页上提供有关系统的信息 - 任何可能帮助黑客的信息都应该保密
标签: c# asp.net-mvc entity-framework asp.net-core