扩展 ASP.net 帮助页面主页
本文关键字:主页 帮助 ASP net 扩展 | 更新日期: 2023-09-27 17:57:10
我一直在使用 ASP.net 帮助页面为我的ApiControllers生成文档。现在,帮助页面的索引显示控制器的名称/路径以及控制器的说明。
CONTROLLER NAME
------------------------------------------------------------
Api Description
------------------------------------------------------------
GET api/Admin/Users Some vague description here.
POST api/Admin/Users Another vague description here.
我想在索引屏幕上显示有关控制器的更多信息。
CONTROLLER NAME
--------------------------------------------------------------------
Api Description Permissions Field2
---------------------------------------------------------------------
GET api/Admin/Users Description here. Admin 48
POST api/Admin/Users Description here. Regular 92
简而言之,我想将视图从第一个视图(只是 api/description)扩展到第二个视图(扩展)。
编辑:我将断点放在ApiGroup.cshtml和HelpPageConfigurationExtensions中。cs,并且索引页的呈现似乎在将属性添加到帮助页 ApiModel 之前运行。
我无法使用与将信息添加到控制器的各个页面相同的方法,因为索引页面是在 HelpPageConfigurationExtensions.cs 中生成 ApiModel 之前呈现的。可能是因为他们不想等待几个亿万年才能加载索引页。
为了解决此问题,我将逻辑直接添加到 ApiGroup.cshtml 文件中。我想在索引页上包含的其他参数派生自可通过 ApiDescription 对象访问的属性。
这看起来像:
(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>
<td class="api-Type1">
@DisplayType1Information(api)
</td>
<td class="api-Type2">
@DisplayType2Information(api)
</td>
</tr>
}
下面是我的一个帮助程序的示例,它保存 displayType1 信息的逻辑:
@helper DisplayType1Information(ApiDescription api)
{
string typeOfType1 = "None";
Type1 attribute =
api.ActionDescriptor.GetCustomAttributes<Type1Attribute>().FirstOrDefault();
if (attribute != null)
{
enum enumType = attribute.enumOfType1;
typeOfType1 = enumType.ToString();
}
<p>@typeOfType1</p>
}
我想在 .cshtml 文件中添加太多逻辑是一种不好的做法,因为它可能会减慢页面的加载速度,但这似乎对页面没有任何影响。