我正在寻找一种在ASP.Net Core 2的“视图”页面(cshtml)中加载数据库表(或获得对其记录的访问)的方法。 我曾经通过从数据库上下文创建对象来访问数据库。例如,要在MVC项目中填充一个表(通过使用Razor引擎),我可以创建一个对象和一个表,如下所示:
$bind
答案 0 :(得分:2)
永远不要直接在视图中访问数据库。相反,您可以使用视图组件。使用以下内容创建文件ViewComponents\CustomerTableViewComponent.cs
:
public class CustomerTableViewComponent : ViewComponent
{
private readonly ProjectNameEntities _context;
public CustomerTableViewComponent(ProjectNameEntities context)
{
_context = context ?? throw new ArgumentNullException(nameof(context));
}
public async Task<IViewComponentResult> InvokeAsync()
{
var customers = await _context.Customer.ToListAsync();
return View(customers);
}
}
然后,创建视图Views\Shared\Components\CustomerTable\Default.csthml
。内部:
@model List<Customer>
<table>
<thead>
<tr>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@item.Name</td>
</tr>
}
</tbody>
</table>
最后,在要显示此表的位置添加以下行:
@await Component.InvokeAsync("CustomerTable")