我有一个Blazor应用程序和一个Razor库。
在Razor库中,我有一个AccountNavigation.razor
组件,可以与html语法一起使用,并且可以正常工作,例如:<AccountNavigation />
问题出在另一个组件上,Login.razor
在同一个库中,@page "/login"
写在它的顶部。没有链接可用于href="/login"
,即使我手动尝试该路由也不起作用。如果我将Login.razor
移至Blazor应用程序项目,它将可以正常工作。
我的Razor库项目如下:
<Project Sdk="Microsoft.NET.Sdk.Razor">
<PropertyGroup Label="Globals">
<SccProjectName>SAK</SccProjectName>
<SccProvider>SAK</SccProvider>
<SccAuxPath>SAK</SccAuxPath>
<SccLocalPath>SAK</SccLocalPath>
</PropertyGroup>
<PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<Version>1.0.3.5</Version>
<LangVersion>8.0</LangVersion>
<RazorLangVersion>3.0</RazorLangVersion>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components" Version="3.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Components.Web" Version="3.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.RazorPages" Version="2.2.5" />
</ItemGroup>
</Project>
我也尝试过针对网络核心3.0和同样的问题。我的Razor库中只有3个文件。有效的AccountNavigation.razor
,Login.razor
和_Imports.razor
。有什么我想念的吗?
答案 0 :(得分:2)
不确定何时开始或为什么开始发生。但就我而言,每次我添加或重命名剃刀组件时,它都会在csproj文件中的该组件中添加一个<remove>
项目。只需将其删除。
使用asp.net core 3.1和blazor 3.2预览版2
答案 1 :(得分:1)
感谢CoolBots向我介绍Blazor Routing上的文档,我需要这一关键部分:
使用AdditionalAssemblies参数指定其他 搜索时要考虑的路由器组件的程序集 可路由的组件。另外考虑指定的组件 到AppAssembly指定的程序集。在以下示例中, Component1是在引用的类中定义的可路由组件 图书馆。下面的AdditionalAssemblies示例导致路由 对Component1的支持:
<Router AppAssembly="typeof(Program).Assembly" AdditionalAssemblies="new[] { typeof(Component1).Assembly }> ...
答案 2 :(得分:1)
@maksymiuk在这一点上是绝对正确的。更改Core 3.1中App.Razor文件中的Router标记,并包括外部路由。
<Router AppAssembly="typeof(Program).Assembly"
AdditionalAssemblies="new[] { typeof(Component1).Assembly }> ...
但是,有趣的是,只要在Razor库中包含1个组件,您就会发现其他组件中的所有其他路由(至少在同一Areas / Pages文件夹中)也将起作用。