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 44bdb3e632..b3eceffdef 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 @@ -69,6 +69,7 @@ namespace Volo.Docs.Pages.Documents.Project public bool FullSearchEnabled { get; set; } + private const int MaxDescriptionMetaTagLength = 200; private readonly IDocumentAppService _documentAppService; private readonly IDocumentToHtmlConverterFactory _documentToHtmlConverterFactory; private readonly IProjectAppService _projectAppService; @@ -596,14 +597,19 @@ namespace Volo.Docs.Pages.Documents.Project public string GetDescription() { - var startIndex = Document.Content.IndexOf("

", StringComparison.Ordinal); - var lastIndex = Document.Content.IndexOf("

", StringComparison.Ordinal); - var description = Document.Content.Substring(startIndex,lastIndex); + var firstParagraph = new Regex(@"

(.*?)

"); + var match = firstParagraph.Match(Document.Content); + if (!match.Success) + { + return null; + } + + var description = HttpUtility.HtmlDecode(match.Value); - Regex rx = new Regex("<[^>]*>"); - description = rx.Replace(description, ""); + var htmlTagReplacer = new Regex(@"<[^>]*>", RegexOptions.IgnoreCase); + description = htmlTagReplacer.Replace(description, m => string.Empty); - return description.Truncate(200); + return description.Truncate(MaxDescriptionMetaTagLength); } } }