Создание серверного приложения Blazor, которое представляет собой Wiki, в стиле Wiki. js (но с. net, конечно)
Поскольку пользователи создают страницы, это в основном это SPA с index.razor
, соответствующим следующему:
@page "/"
@page "/{PageLink}"
@page "/{Folder}/{PageLink}"
К сожалению, поскольку я пытаюсь перенести существующую Wiki.js
вики, я пытаюсь сохранить их файловую структуру, где uploads
живет внутри основной папки репо. Таким образом, index.razor
ловит. .../uploads/file.pdf
и пытается отобразить его как вики-страницу (Папка = 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. Однако на вики-странице нажатие на ссылку <a href="uploads/file.pdf">File</a>
не работает и все равно запускает маршрут index.razor
. Shift-click, Ctrl-click, правой кнопкой мыши и «Открыть в новой вкладке» все работают , но щелчок по основному c не работает.
Я знаю, что в будущем, Blazor может иметь более продвинутую поддержку маршрутизации, что позволило бы мне «исключить» папку uploads
из index.razor
. В то же время, как мне исправить эти ссылки, чтобы показать мой PDF?
(полный код на Блики )