以Wiki.js的样式(当然使用.net)创建作为Wiki的Blazor服务器端应用程序
自用户创建页面以来,这主要是SPA,其中index.razor
符合以下条件:
@page "/"
@page "/{PageLink}"
@page "/{Folder}/{PageLink}"
不幸的是,由于我正在尝试迁移现有的Wiki.js
Wiki,因此我试图保留它们的文件结构,其中uploads
位于主repo文件夹中。因此,index.razor
抓住了。 .../uploads/file.pdf
并尝试将其呈现为Wiki页面(文件夹= uploads
,PageLink = file.pdf
)。
我能够将其添加到Startup.cs
,这有帮助:
app.Map("/uploads", fileApp =>
{
fileApp.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"WikiPages", @"uploads")),
ServeUnknownFileTypes = true
});
});
将其放在app.UseEndpoints
之前意味着输入或粘贴路径http://localhost/uploads/file.pdf
现在可以正常工作,并显示我的pdf。但是,在Wiki页面上,单击链接<a href="uploads/file.pdf">File</a>
不起作用,并且仍会触发index.razor
路线。按住Shift键,Ctrl键单击,右键单击和“在新选项卡中打开”都是工作,但是基本单击则不行。
我知道,将来Blazor可能会提供更高级的路由支持,这将使我能够从uploads
中“排除”文件夹index.razor
。同时,我该如何修复这些链接以显示pdf文件?
(完整代码位于Bliki)