操作帮助页面上的 URI 参数部分旨在描述从 URI 查询字符串(例如 )绑定的操作参数...?SomeParam=SomeValue
。在您的情况下version
,它只是与操作参数无关的 URI 路径的一部分。因此,在 URI 参数部分对其进行描述可能会令人困惑。这就是为什么我建议将其从本节中删除并(如果需要)将version
模板描述放到帮助页面的其他部分。
为此,您应该:
version
从 URI 参数列表中删除。这一步并不简单,因为version
路由模板被识别ApiExplorer
为操作参数。抑制它需要修改生成的代码来填充 API 帮助页面 ( HelpPageApiModel
) 的模型。此代码位于HelpPageConfigurationExtensions.GenerateUriParameters()
方法中。找到以下几行:
Debug.Assert(parameterDescriptor == null);
// If parameterDescriptor is null, this is an undeclared route parameter which only occurs
// when source is FromUri. Ignored in request model and among resource parameters but listed
// as a simple string here.
ModelDescription modelDescription = modelGenerator.GetOrCreateModelDescription(typeof(string));
AddParameterDescription(apiModel, apiParameter, modelDescription);
version
并为参数添加条件:
Debug.Assert(parameterDescriptor == null);
if (apiParameter.Documentation == null && String.Equals(apiParameter.Name, "version", StringComparison.InvariantCulture))
{
continue;
}
// If parameterDescriptor is null, this is an undeclared route parameter which only occurs
// when source is FromUri. Ignored in request model and among resource parameters but listed
// as a simple string here.
ModelDescription modelDescription = modelGenerator.GetOrCreateModelDescription(typeof(string));
AddParameterDescription(apiModel, apiParameter, modelDescription);
现在您将获得以下帮助页面:
为版本 URI 模板添加特定部分:
打开视图文件Areas\HelpPage\Views\Help\DisplayTemplates\HelpPageApiModel.cshtml
并添加所需的版本部分。例如:
...
<h2>Request Information</h2>
<h3>Version info</h3>
Put some info about version here.
<h3>URI Parameters</h3>
@Html.DisplayFor(m => m.UriParameters, "Parameters")
...
这样的观点会给你:
但是,如果您想在 URI 参数部分查看版本描述,您可以返回HelpPageConfigurationExtensions.GenerateUriParameters()
方法并将上面的代码替换为以下代码:
Debug.Assert(parameterDescriptor == null);
if (apiParameter.Documentation == null && String.Equals(apiParameter.Name, "version", StringComparison.InvariantCulture))
{
apiParameter.Documentation = "Put description for version parameter here.";
}
// If parameterDescriptor is null, this is an undeclared route parameter which only occurs
// when source is FromUri. Ignored in request model and among resource parameters but listed
// as a simple string here.
ModelDescription modelDescription = modelGenerator.GetOrCreateModelDescription(typeof(string));
AddParameterDescription(apiModel, apiParameter, modelDescription);
这会给你:
好吧,这些方法并不完美(我不喜欢修改 generate HelpPageConfigurationExtensions
)。但似乎没有其他方法可以抑制或填充version
参数的描述。