WebApi帮助页面:不要在XML文档中转义HTML

sǝɯ*_*ɯɐſ 17 asp.net-web-api asp.net-web-api-helppages

我正在为我的ASP.NET Web API帮助页面使用XML文档,如下所示.我想知道是否有办法在评论中包含html,使其在网页上呈现,而不是被删除/忽略/转义.
具体来说,我正在寻找一种创建换行符的方法,但是能够创建项目符号列表等等会很棒!

Ex /我希望能够做到这样的事情:

/// <summary>
/// CRUD operations for SalesDocument<br/>
/// This is a new line
/// </summary>
[RoutePrefix("api/SalesDocument")]
public partial class SalesDocumentController : ApiController
Run Code Online (Sandbox Code Playgroud)

并将它显示在帮助页面上,如下所示:

CRUD operations for SalesDocument 
This is a new line.
Run Code Online (Sandbox Code Playgroud)

而不是这样:(在这种情况下,<br/>以某种方式被删除 - 如果我尝试使用<p>标签,它们只是被转义)

CRUD operations for SalesDocument This is a new line.
Run Code Online (Sandbox Code Playgroud)

*我已经尝试过<para>工具提示的多个帖子所建议的标记,但这不适用于我的帮助页面.

任何建议都非常感谢!

Kir*_*lla 32

在安装的XmlDocumentationProvider.cs文件中Areas\HelpPage,您可以查找名为的方法GetTagValue.这里从修改的返回值node.Value.Trim()node.InnerXml.

private static string GetTagValue(XPathNavigator parentNode, string tagName)
{
    if (parentNode != null)
    {
        XPathNavigator node = parentNode.SelectSingleNode(tagName);
        if (node != null)
        {
            return node.InnerXml; 
        } 
    }

    return null;
}
Run Code Online (Sandbox Code Playgroud)

现在打开已安装的文件Areas\HelpPage\Views\Help\DisplayTemplates\ApiGroup.cshtml并修改以下行:

<p>@controllerDocumentation</p>
Run Code Online (Sandbox Code Playgroud)

<p>@Html.Raw(controllerDocumentation)</p>
Run Code Online (Sandbox Code Playgroud)

  • 我想知道它为什么不适合我,然后我意识到它需要在多个地方完成(取决于你想要标签的工作位置).我做的是ApiGroup.cshtml,HelpPageApiModel.cshtml和ResourceModel.cshtml(在每个中查找.Documentation和.RequestDocumentation).认为它可能会帮助下一个发现这个的人:) (14认同)
  • 您是否认为在GitHub上对HelpPages项目进行拉取请求是否值得? (5认同)
  • 我不得不在`GetDocumentation`中更改`return parameterNode.InnerXml;`来使用参数部分 (4认同)
  • 不是在评论中编写html代码,而是建议只查找并替换新行:http://stackoverflow.com/a/25464271/632495 (2认同)