如何向Web Api XML文档(帮助页面)添加新列?

时间:2014-12-03 21:05:33

标签: .net xml asp.net-web-api xml-documentation

我正在使用由Visual Studio 2012中的nuget提供的最新Web Api XML文档。实际上,我正在进行XML注释,我可以获得具有此类属性的类的帮助页面:

Name  
Description  
Type  
Additional information  

我想知道是否可以添加一个来插入数据示例,但我无法在评论中找到该模型。

我执行以下操作:

    /// <summary>
    /// My description
    /// </summary>
    /// <example>My example</example>

但它似乎没有出现。

我知道我需要更改Parameters.cshtml中加载的模型,以便在html中显示它(这不是问题)但是......

如何更改此模型?

提前致谢

1 个答案:

答案 0 :(得分:1)

Web API不支持这样做,因此您必须自己构建它。虽然它并不那么困难,但您应首先考虑是否将示例添加到描述本身并不能完成工作。

视图,您应该在其中添加第3列:

Areas/HelpPage/Views/Help/DisplayTemplates/ApiGroup.cshtml

相关摘要:

@foreach (var api in Model)
{
    <tr>
        <td class="api-name"><a href="@Url.Action("Api", "Help", new { apiId = api.GetFriendlyId() })">@api.HttpMethod.Method @api.RelativePath</a></td>
        <td class="api-documentation">
        @if (api.Documentation != null)
        {
            <p>@api.Documentation</p>
        }
        else
        {
            <p>No documentation available.</p>
        }
        </td>
    </tr>
}

然后,您很快意识到需要查看ApiDescription模型。

ApiDescription最相关的属性似乎是:
- ParameterDescriptions(参数集合。曝光:Name, Source, Documentation
- ResponseDescription

这些是基础知识。为了实现正确的帮助页面,这个URL也将证明有很多用处: http://blogs.msdn.com/b/yaohuang1/archive/2012/12/10/asp-net-web-api-help-page-part-3-advanced-help-page-customizations.aspx

以下是我的基本实现,其中列出了参数namesource

<h2 id="@Model.Key.ControllerName">@Model.Key.ControllerName</h2>
@if (!String.IsNullOrEmpty(controllerDocumentation))
{
    <p>@controllerDocumentation</p>
}
<table class="help-page-table">
    <thead>
        <tr>
            <th>API</th>
            <th>Description</th>
            <th>Params</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var api in Model)
        {
            <tr>
                <td class="api-name"><a href="@Url.Action("Api", "Help", new { apiId = api.GetFriendlyId() })">@api.HttpMethod.Method @api.RelativePath</a></td>
                <td class="api-documentation">
                    @if (api.Documentation != null)
                    {
                        <p>@api.Documentation</p>
                    }
                    else
                    {
                        <p>No documentation available.</p>
                    }
                </td>
                <td class="api-documentation">
                    @foreach (var p in api.ParameterDescriptions)
                    {
                        @p.Name @:- @p.Source
                    }
                </td>
            </tr>
        }
    </tbody>
</table>