如何在ASP.Net Core2 cshtml文件中访问数据库(查看)

时间:2018-10-04 15:57:29

标签: c# asp.net-core-2.0 dbcontext

我正在寻找一种在ASP.Net Core 2的“视图”页面(cshtml)中加载数据库表(或获得对其记录的访问)的方法。 我曾经通过从数据库上下文创建对象来访问数据库。例如,要在MVC项目中填充一个表(通过使用Razor引擎),我可以创建一个对象和一个表,如下所示:

$bind

1 个答案:

答案 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")