传递(或注入)一些 HTML/JS 或传递一些模型到共享的 Net Core Razor Class 库
Pass (or inject) some HTML/JS or pass some model to shared Net Core Razor Class Library
我想要一个共享的 UI 项目,它具有其他应用程序的通用界面,因此我不必 copy/paste 在所有需要相同的应用程序之间使用相同的 _Layout.cshtml
UI.
使用此 as reference and this article 后,我创建了共享 Razor Class 库项目。当我通过 NuGet
引用此项目时,会调用此共享项目中的 _Layout.cshtml
并使用导航呈现 header。
但是如果我想在 header 中添加一些额外的 HTML,我的问题就来了。假设我已经用一些 link 下拉到主登陆页面、用户设置、一些管理页面等。但是我怎么能在所有常见的旁边添加一些特定于具体应用程序的额外导航 link links?有没有办法注入HTML?或者也许将一些 DTO 模型传递给这个 _Layout.cshtml
?
在下面转储图像以帮助您了解我试图实现的目标。
有两种可能的方法。首先,您可以简单地在您的布局中调用一个部分:
<partial name="_HeaderExtra" />
然后,在RCL中添加一个空的partial view就可以了,即_HeaderExtra.cshtml
。最后,在您的实际应用程序中,在与 RCL 中相同的位置创建相同的分部视图,并在那里添加您想要的任何额外 HTML。当部分被拉入您的布局时,它会首先查看您的项目,然后再回退到 RCL。
第二个选项是使用部分。 Sections 稍微严格一点,如果你做任何视图继承,你必须记住总是重新实现它们。本质上,在您的布局中,类似于:
@await RenderSectionAsync("HeaderExtra", required: false)
然后,在任何子布局或视图中:
@section HeaderExtra
{
<!-- add something here -->
}
如果您有子布局并且希望能够在视图中进一步自定义此部分,那么您需要:
@section HeaderExtra
{
@await RenderSectionAsync("HeaderExtra", required: false)
<!-- add something here -->
}
我想要一个共享的 UI 项目,它具有其他应用程序的通用界面,因此我不必 copy/paste 在所有需要相同的应用程序之间使用相同的 _Layout.cshtml
UI.
使用此 NuGet
引用此项目时,会调用此共享项目中的 _Layout.cshtml
并使用导航呈现 header。
但是如果我想在 header 中添加一些额外的 HTML,我的问题就来了。假设我已经用一些 link 下拉到主登陆页面、用户设置、一些管理页面等。但是我怎么能在所有常见的旁边添加一些特定于具体应用程序的额外导航 link links?有没有办法注入HTML?或者也许将一些 DTO 模型传递给这个 _Layout.cshtml
?
在下面转储图像以帮助您了解我试图实现的目标。
有两种可能的方法。首先,您可以简单地在您的布局中调用一个部分:
<partial name="_HeaderExtra" />
然后,在RCL中添加一个空的partial view就可以了,即_HeaderExtra.cshtml
。最后,在您的实际应用程序中,在与 RCL 中相同的位置创建相同的分部视图,并在那里添加您想要的任何额外 HTML。当部分被拉入您的布局时,它会首先查看您的项目,然后再回退到 RCL。
第二个选项是使用部分。 Sections 稍微严格一点,如果你做任何视图继承,你必须记住总是重新实现它们。本质上,在您的布局中,类似于:
@await RenderSectionAsync("HeaderExtra", required: false)
然后,在任何子布局或视图中:
@section HeaderExtra
{
<!-- add something here -->
}
如果您有子布局并且希望能够在视图中进一步自定义此部分,那么您需要:
@section HeaderExtra
{
@await RenderSectionAsync("HeaderExtra", required: false)
<!-- add something here -->
}