Передать (или внедрить) некоторый HTML / JS или передать некоторую модель в общую библиотеку классов Net Core Razor - PullRequest
0 голосов
/ 29 марта 2019

Я хотел бы иметь общий проект пользовательского интерфейса с общим интерфейсом для других приложений, поэтому мне не нужно копировать / вставлять один и тот же _Layout.cshtml между всеми приложениями, которым требуется один и тот же пользовательский интерфейс.

После использованияэтот вопрос в качестве ссылки и статья Я создал общий проект библиотеки классов Razor.И когда я ссылаюсь на этот проект через NuGet, _Layout.cshtml в этом общем проекте вызывается и отображает заголовок с помощью навигации.

Но тогда возникает моя проблема, если я хочу добавить дополнительный заголовок HTML в заголовок.Допустим, у меня есть выпадающая ссылка с главной страницей, пользовательскими настройками, страницей администрирования и т. Д. Но как я могу добавить дополнительные навигационные ссылки, относящиеся к конкретному приложению, рядом со всеми общими ссылками?Есть ли способ ввести HTML?Или, может быть, передать какую-то модель DTO этой _Layout.cshtml?

Дамп изображения ниже, чтобы помочь вам увидеть то, что я пытаюсь достичь.

enter image description here

1 Ответ

1 голос
/ 29 марта 2019

Есть два возможных подхода.Во-первых, вы можете просто вызвать частичное в вашей раскладке:

<partial name="_HeaderExtra" />

Затем просто добавьте пустое частичное представление в RCL, чтобы оно было удовлетворено, то есть _HeaderExtra.cshtml.Наконец, в вашем реальном приложении создайте тот же частичный вид в том же месте, что и в RCL, и добавьте туда любой дополнительный HTML-код.Когда часть будет добавлена ​​в ваш макет, она будет сначала смотреть ваш проект, прежде чем вернуться к RCL.

Второй вариант - использовать разделы.Разделы немного более строгие, и вы должны помнить, чтобы всегда переопределять их, если вы делаете какое-либо наследование представления.По сути, в вашем макете, что-то вроде:

@await RenderSectionAsync("HeaderExtra", required: false)

Затем в любых подуровнях или представлениях:

@section HeaderExtra
{
    <!-- add something here -->
}

Если у вас есть подуровень, и вы хотите иметь возможностьдалее настройте этот раздел в представлениях, тогда вам нужно:

@section HeaderExtra
{
    @await RenderSectionAsync("HeaderExtra", required: false)
    <!-- add something here -->
}
...