Как получить доступ к базе данных в файле ASP.Net Core2 cshtml (View) - PullRequest
0 голосов
/ 04 октября 2018

Я ищу способ загрузить (или получить доступ к записи) таблицу базы данных на страницах просмотра (cshtml) в ASP.Net Core 2. Я использовал для доступа к базе данных, создав объект из контекста БД,Например, чтобы заполнить таблицу в проекте MVC (с помощью движка Razor), я мог бы создать объект и таблицу следующим образом:

<table >
    <thead>
        <tr >
            <th></th>
        </tr>
    </thead>

    ProjectName.Models.ProjectNameEntities db = new ProjectName.Models.ProjectNameEntities();
    var CustomerTableObject= db.Customer.ToList();
    <tbody>
        @foreach (var item in CustomerTableObject)
        {
            <tr>
                <td ></td>
            </tr>
        }
    </tbody>
</table>

1 Ответ

0 голосов
/ 04 октября 2018

Вы никогда не должны обращаться к базе данных непосредственно в представлении.Вместо этого вы можете использовать компонент вида.Создайте файл 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")
...