我使用asp.net WebApi Help Page从源代码的注释中生成文档。之前我曾使用doxygen生成文档。 doxygen可以在注释中解析markdown语法并输出格式良好的文档。但是WebApi Help Page现在无法解析markdown语法。
例如,foo
函数的评论包含 Markdown评论,它将在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";
}
}
答案 0 :(得分:3)
感谢提示,刚刚修改了HelpPageApiModel.cshtml
1)从NuGet安装一些Markdown库,如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>