0

我想为其他应用程序提供一个具有通用界面的共享 UI 项目,因此我不必_Layout.cshtml在需要相同 UI 的所有应用程序之间复制/粘贴相同的项目。

在使用这个问题作为参考和这篇文章之后,我创建了共享的 Razor 类库项目。当我通过 引用这个项目时NuGet_Layout.cshtml这个共享项目中的 被调用并通过导航呈现标题。

但是如果我想在标题中添加一些额外的 HTML,我的问题就来了。假设我已经下拉了一些指向主登录页面、用户设置、一些管理页面等的链接。但是我如何在所有常用链接旁边添加一些特定于具体应用程序的额外导航链接?有没有办法注入 HTML?或者也许将一些 DTO 模型传递给这个_Layout.cshtml

转储下面的图像,以帮助您了解我尝试实现的目标。

在此处输入图像描述

4

1 回答 1

1

有两种可能的方法。首先,您可以简单地在布局中调用部分:

<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 -->
}
于 2019-03-29T15:21:02.327 回答