Blazor-Razor类库-重用完整的Blazor页面

时间:2019-12-17 09:32:32

标签: blazor blazor-client-side razor-class-library

我在这里遇到问题

我用核心3.1创建了Blazor应用程序(服务器端),然后创建了Razor类库(旧的razorlib) 有了这个classlib,我可以在blazor应用程序中创建blazor comp并重复使用,共享Css甚至创建完整的Razor视图,例如Area / MyAdmin / Pages / Page1.cshtml,并通过我的Blazor应用程序调用{​​{3}}使用它,对不起对于大的介绍,我的问题是,如何像页面一样重用FULL Blazor组件?在我的Razor类库中添加一个文件夹Pages,并在其中添加Contact.razor,它将不会用作我的Blazor应用程序中的<联系人>,但我将能够像https://MyApp/MyAdmin/Page1一样调用?

有人可以给我一个例子吗?谢谢!

2 个答案:

答案 0 :(得分:1)

需要执行一些步骤才能显示Blazor项目中Razor类库中的页面:

  1. 创建一个类库(存在模板)

  2. 将页面添加到类库

  3. 将项目引用添加到blazor项目(右键单击依赖项...)

  4. 在Blazor项目中,将Razor组件库的程序集添加到Router组件(在本示例中,Razor组件库的名称为GeneralUi)。您可以通过设置AdditionalAssemblies参数来实现:

       <Router AppAssembly="@typeof(Program).Assembly"
             AdditionalAssemblies="new[] { typeof(GeneralUi.About).Assembly}">
         <Found Context="routeData">
             <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
         </Found>
         <NotFound>
             <LayoutView Layout="@typeof(MainLayout)">
                 <p>Sorry, there's nothing at this address.</p>
             </LayoutView>
         </NotFound>
     </Router>
    

在这里重要的是只从Razor组件库中提取一页(与选择哪一个无关)。通过这一步骤,您可以从Razor组件库路由到页面。

如果只想使用组件(没有页面),则可以删除步骤4。然后,只需要将组件包括在另一个组件中即可。如果您不想提供完整的名称空间,则只需在Blazor项目的_Imports.razor文件中添加名称空间即可。

如果在Razor类库中定义了样式,则需要将这些样式(文件)添加到Blazor项目中。在Blazor WebAssembly中,只需添加以下内容即可在index.html文件中完成此操作:

<link href="_content/GeneralUi/css/styles.css" rel="stylesheet" />

_content 是一个命名约定,需要告知样式文件来自另一个程序集/项目。在此示例中,样式文件 styles.css 来自GeneralUi项目,并将其放置在wwwroot文件夹下的css文件夹中(wwwroot文件夹中的所有项目的静态资产)

答案 1 :(得分:0)

  • 一旦使用Component1作为Razor页面创建了RazorClasslibrary项目,请使用以下输出类型构建项目:(默认)类libray
  • 将创建单个dll,请记住名称空间
  • 通过选择dll来添加对新Blazor项目的引用,或者通过选择.csproj来添加为项目
  • 不需要,但是构建新的Blazor项目,并在任何页面中开始添加组件。
  • 您可以使用完全限定的名称空间,也可以在新的/ contact页面中导入,以删除其他不需要的代码

例如

@page "/contact"
<RazorClassLibrary.Component1></RazorClassLibrary.Component1>
@code { ... }