0

我使用asp.net WebApi Help Page從源代碼註釋生成文檔。我之前用doxygen來生成文檔。 doxygen可以在註釋中解析markdown語法並輸出格式良好的文檔。但WebApi Help Page現在無法解析markdown語法。帶有降價註釋的ASP.NET Web API幫助頁面

例如,foo功能的註釋包含降價評論,這將是輸出爲WebApi Help Page### Markdown comments *It will return "foo" *It always returns "foo"

public MyApiController : ApiController { 
    ///<summary> 
    /// It will return "foo" 
    /// ### Markdown comments 
    /// * It will return "foo" 
    /// * It always returns "foo" 
    ///</summary>  
    [HttpPost, ActionName("foo")] 
    public string Foo() { 
     return "foo"; 
    } 
} 
+2

我不知道「doxygen的」,但你可以寫自己的實現IDocumentationProvider'的'並將其提供給HelpPage或者你可以去查看已安裝的HelpPage文件'Areas \ HelpPage \ XmlDocumentationProvider.cs'並根據需要對其進行修改 –

+0

我已閱讀[IDocumentationProvider @ MSDN](http://msdn.microsoft.com/zh-cn/library/system。 web.http.description.idocumentationprovider(v = vs.118).aspx),它返回'string'。但[MarkdownDeep](http://www.nuget.org/packages/MarkdownDeep.Full/1.5.0)將'string'作爲輸入並將其變爲'IHtmlString'。 – AechoLiu

+0

現在,我修改了'Area \ HelpPage \ Views \ DisplayTemplates',並將'document'字符串變成了@@ Html.Markdown(document)。 – AechoLiu

回答

3

謝謝你的提示,剛修改HelpPageApiModel.cshtml

1)從安裝一些的NuGet庫的降價,喜歡MarkdownDeep

2)添加輔助功能。注意,你應該修剪線條,因爲<summery>被解析爲換行符後的所有尾隨空格。否則所有減價列表等,不會被正確解析。

@functions { 
    string ToMarkdown(string str) 
    { 
     var lines = str.Split('\n'); 
     var whitespaceCount = 0; 
     var i = 0; //from 2. Line 
     var imax = lines.Count(); 
     while (++i < imax) 
     { 
      var line = lines[i]; 
      if (whitespaceCount != 0) 
      { 
       lines[i] = line.Substring(whitespaceCount); 
       continue; 
      } 
      var trimmed = line.TrimStart(); 
      if (trimmed.Length == 0 || trimmed == line) continue; 
      whitespaceCount = line.Length - trimmed.Length; 
      i--; 
     } 
     str = string.Join("\n", lines); 
     var md = new MarkdownDeep.Markdown {ExtraMode = true, SafeMode = false}; 
     return md.Transform(str); 
    } 
} 

3)預處理文檔字符串輸出

<p>@Html.Raw(ToMarkdown(description.Documentation))</p> 
+0

我無法驗證此答案。所以我先投票贊成。現在,我不再編寫C#代碼和asp.net MVC代碼。所以,我無法驗證這個答案。 – AechoLiu

+1

我已驗證此答案及其真棒。我現在看到爲什麼在測試完所有額外的白色空間修剪之後是必要的。謝謝救了我的一天。 –

相關問題