Может ли представление выборочно заполнять разделы, которые отображаются вне представления в ASP.NET mvc? - PullRequest
0 голосов
/ 15 октября 2019

Я делаю простой сайт с начальной загрузкой и .net core mvc (v3.0). Поскольку на большинстве страниц повторно используется контейнер начальной загрузки, я решил поместить его в файл макета, чтобы не повторять одну и ту же настройку повсеместно.

Недостатком является то, что если представлению требуются фиксированные элементыте, которые в конечном итоге фиксируются в контейнере, а не в окне просмотра.

Мне интересно, можно ли вызвать какой-то синтаксис внутри файла view.cshtml, который может привести к отображению раздела в файле _Layout.cshtml (извините, если на этот вопрос ответили, но я нене уверен, что искать).

Например,

_Layout.cshtml

@using Microsoft.Extensions.Hosting
@inject Microsoft.AspNetCore.Hosting.IWebHostEnvironment _environment
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"]</title>
</head>
<body>
    @* this div only gets rendered based on logic inside the view*@
    <div id="conditionalViewDiv">

    </div>
    <div class="content container-fluid pl-0 pr-0 moveable" id="containerMain">
        <main role="main">
            @RenderBody()
        </main>
    </div>
    @RenderSection("Scripts", required: false)
</body>
</html>

, а затем в SomeView.cshtml

@{
    ViewData["Title"] = "title";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

@MadeUpRenderCommand("conditionalViewDiv")

@*other view stuff*@

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 15 октября 2019

Согласно документам , Компоненты представления предназначены везде, где у вас есть логика многократного использования, похожая на частичные представления, но они гораздо более мощные. Основное отличие состоит в том, что когда вы используете частичное представление, у вас все еще есть зависимость от контроллера, в то время как в View Component вам не нужен контроллер. Таким образом, существует разделение задач.

Компонент представления - это класс C #, который обеспечивает частичное представление необходимых ему данных независимо от родительского представления и действия, которое его отображает.

Можно найти хорошие просветляющие примеры, в частности:

Надеюсь, это помогло.

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