From cde3af6de236361aaea9515935875e66e9e6a463 Mon Sep 17 00:00:00 2001 From: Salih Date: Thu, 4 Apr 2024 23:33:50 +0300 Subject: [PATCH] refactor routing --- .../app/VoloDocs.Web/Pages/Index.cshtml.cs | 8 ++++++ .../Documents/TagHelpers/TreeTagHelper.cs | 8 ++---- .../MarkdownDocumentToHtmlConverter.cs | 8 ++---- .../Pages/Documents/Project/Index.cshtml.cs | 25 ++++++++----------- 4 files changed, 23 insertions(+), 26 deletions(-) diff --git a/modules/docs/app/VoloDocs.Web/Pages/Index.cshtml.cs b/modules/docs/app/VoloDocs.Web/Pages/Index.cshtml.cs index ce039c1acf..14a5f60c49 100644 --- a/modules/docs/app/VoloDocs.Web/Pages/Index.cshtml.cs +++ b/modules/docs/app/VoloDocs.Web/Pages/Index.cshtml.cs @@ -25,6 +25,13 @@ namespace VoloDocs.Web.Pages public virtual async Task OnGetAsync() { + if (_urlUiOptions.SingleProjectMode.Enable) + { + return RedirectToPage("/Documents/Project/Index", new Dictionary { + { nameof(Volo.Docs.Pages.Documents.Project.IndexModel.LanguageCode), "en" }, + { nameof(Volo.Docs.Pages.Documents.Project.IndexModel.Version), DocsAppConsts.Latest } + }); + } var projects = await _projectAppService.GetListAsync(); if (projects.Items.Count == 1) @@ -51,6 +58,7 @@ namespace VoloDocs.Web.Pages var routeValues = new Dictionary { { nameof(Volo.Docs.Pages.Documents.Project.IndexModel.LanguageCode), language }, { nameof(Volo.Docs.Pages.Documents.Project.IndexModel.Version), version ?? DocsAppConsts.Latest }, + { nameof(Volo.Docs.Pages.Documents.Project.IndexModel.ProjectName), project.ShortName } }; if (!_urlUiOptions.SingleProjectMode.Enable) diff --git a/modules/docs/src/Volo.Docs.Web/Areas/Documents/TagHelpers/TreeTagHelper.cs b/modules/docs/src/Volo.Docs.Web/Areas/Documents/TagHelpers/TreeTagHelper.cs index f30b113acc..3ebcd39f84 100644 --- a/modules/docs/src/Volo.Docs.Web/Areas/Documents/TagHelpers/TreeTagHelper.cs +++ b/modules/docs/src/Volo.Docs.Web/Areas/Documents/TagHelpers/TreeTagHelper.cs @@ -183,14 +183,10 @@ namespace Volo.Docs.Areas.Documents.TagHelpers var routeValues = new Dictionary { { nameof(IndexModel.LanguageCode), LanguageCode }, { nameof(IndexModel.Version), Version }, - { nameof(IndexModel.DocumentName), pathWithoutFileExtension } + { nameof(IndexModel.DocumentName), pathWithoutFileExtension }, + { nameof(IndexModel.ProjectName), ProjectName } }; - if (!_uiOptions.SingleProjectMode.Enable) - { - routeValues.Add(nameof(IndexModel.ProjectName), ProjectName); - } - return _linkGenerator.GetPathByPage("/Documents/Project/Index", values: routeValues); } diff --git a/modules/docs/src/Volo.Docs.Web/Markdown/MarkdownDocumentToHtmlConverter.cs b/modules/docs/src/Volo.Docs.Web/Markdown/MarkdownDocumentToHtmlConverter.cs index ea3cdb02cb..c01417fdad 100644 --- a/modules/docs/src/Volo.Docs.Web/Markdown/MarkdownDocumentToHtmlConverter.cs +++ b/modules/docs/src/Volo.Docs.Web/Markdown/MarkdownDocumentToHtmlConverter.cs @@ -178,14 +178,10 @@ namespace Volo.Docs.Markdown var routeValues = new Dictionary { { nameof(IndexModel.LanguageCode), languageCode }, { nameof(IndexModel.Version), version }, - { nameof(IndexModel.DocumentName), documentName } + { nameof(IndexModel.DocumentName), documentName }, + { nameof(IndexModel.ProjectName), projectShortName } }; - if (!_uiOptions.SingleProjectMode.Enable) - { - routeValues.Add(nameof(IndexModel.ProjectName), projectShortName); - } - return _linkGenerator.GetPathByPage("/Documents/Project/Index", values: routeValues); } } diff --git a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs index 42c8240bea..c9bce0330d 100644 --- a/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs +++ b/modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs @@ -154,6 +154,13 @@ namespace Volo.Docs.Pages.Documents.Project try { await SetProjectAsync(); + if (Project == null) + { + ProjectFound = false; + Response.StatusCode = 404; + return Page(); + } + } catch (EntityNotFoundException e) { @@ -220,11 +227,10 @@ namespace Volo.Docs.Pages.Documents.Project return; } - var singleProjectName = _uiOptions.SingleProjectMode.ProjectName; + var singleProjectName = ProjectName ?? _uiOptions.SingleProjectMode.ProjectName; if (!singleProjectName.IsNullOrWhiteSpace()) { Project = await _projectAppService.GetAsync(singleProjectName); - ProjectName = singleProjectName; return; } @@ -232,17 +238,12 @@ namespace Volo.Docs.Pages.Documents.Project if (listResult.Items.Count == 1) { Project = listResult.Items[0]; - ProjectName = Project.ShortName; - return; } - - ProjectName = singleProjectName; - Project = await _projectAppService.GetAsync(ProjectName); } private async Task SetLanguageList() { - LanguageConfig = await _projectAppService.GetLanguageListAsync(ProjectName, Version); + LanguageConfig = await _projectAppService.GetLanguageListAsync(Project.ShortName, Version); SetDefaultLanguageCode(); } @@ -281,14 +282,10 @@ namespace Volo.Docs.Pages.Documents.Project var routeValues = new Dictionary { { nameof(LanguageCode), languageCode }, { nameof(Version), version }, - { nameof(DocumentName), documentName } + { nameof(DocumentName), documentName }, + { nameof(ProjectName), projectName } }; - if (!_uiOptions.SingleProjectMode.Enable) - { - routeValues.Add(nameof(ProjectName), projectName); - } - return Url.Page("/Documents/Project/Index", routeValues); }