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 9a69877b3a..6afc9c7081 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 @@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.Extensions.Localization; using Microsoft.Extensions.Logging; using Microsoft.Extensions.Options; +using Volo.Abp.Application.Dtos; using Volo.Abp.AspNetCore.Mvc.UI.RazorPages; using Volo.Abp.Domain.Entities; using Volo.Docs.Documents; @@ -48,6 +49,8 @@ namespace Volo.Docs.Pages.Documents.Project public ProjectDto Project { get; set; } public LanguageConfig LanguageConfig { get; set; } + + public ListResultDto Versions { get; set; } public List LanguageSelectListItems { get; set; } @@ -163,6 +166,11 @@ namespace Volo.Docs.Pages.Documents.Project { return RedirectToDefaultLanguage(); } + + if (!CheckVersion()) + { + return RedirectToDefaultVersion(); + } if (IsDocumentCultureDifferentThanCurrent()) { @@ -238,6 +246,11 @@ namespace Volo.Docs.Pages.Documents.Project { return LanguageConfig.Languages.Any(l => l.Code.Equals(LanguageCode, StringComparison.OrdinalIgnoreCase)); } + + private bool CheckVersion() + { + return Version == DocsAppConsts.Latest || Versions.Items.Any(v => v.Name.Equals(Version, StringComparison.OrdinalIgnoreCase)); + } private IActionResult ReloadPageWithCulture() { @@ -280,6 +293,16 @@ namespace Volo.Docs.Pages.Documents.Project documentName : DocumentName )); } + + private IActionResult RedirectToDefaultVersion() + { + return RedirectToPage(BuildDocumentUrl( + projectName : ProjectName, + version : DocsAppConsts.Latest, + languageCode : LanguageCode, + documentName : DocumentName + )); + } private IActionResult RedirectToDefaultDocument() { @@ -320,8 +343,8 @@ namespace Volo.Docs.Pages.Documents.Project Version = DocsAppConsts.Latest; } - var output = await _projectAppService.GetVersionsAsync(Project.ShortName); - var versions = output.Items + Versions = await _projectAppService.GetVersionsAsync(Project.ShortName); + var versions = Versions.Items .Select(v => new VersionInfoViewModel(v.DisplayName, v.Name)) .ToList();