C# 如何更改控制器';大摇大摆的用户界面上有谁的名字?
如果我有以下资料:C# 如何更改控制器';大摇大摆的用户界面上有谁的名字?,c#,asp.net-web-api,swagger,swagger-ui,C#,Asp.net Web Api,Swagger,Swagger Ui,如果我有以下资料: MySimpleTestController : ApiController { } 在生成的API文档中,控制器名称是否可以显示为“我的简单测试”而不是“MySimpleTest” 我做了一次搜索,但我主要是通过@Api注释在Java中找到了这样做的方法,但我使用的是C#(.NET4.5.2) 这里是要做的,但它需要添加一个注释到控制器中的每一条路由,这将是很麻烦的,因为我的控制器有许多路由。有更好的方法吗?以下是我最终的做法: [AttributeUsage(Attri
MySimpleTestController : ApiController
{
}
在生成的API文档中,控制器名称是否可以显示为“我的简单测试”而不是“MySimpleTest”
我做了一次搜索,但我主要是通过@Api注释在Java中找到了这样做的方法,但我使用的是C#(.NET4.5.2)
这里是要做的,但它需要添加一个注释到控制器中的每一条路由,这将是很麻烦的,因为我的控制器有许多路由。有更好的方法吗?以下是我最终的做法:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class SwaggerControllerNameAttribute : Attribute
{
public string ControllerName { get; private set; }
public SwaggerControllerNameAttribute(string ctrlrName)
{
if (string.IsNullOrEmpty(ctrlrName))
{
throw new ArgumentNullException("ctrlrName");
}
ControllerName = ctrlrName;
}
}
然后将以下代码添加到配置中:
configuration.EnableSwagger(c =>
{
c.GroupActionsBy(apiDesc =>
{
var attribute = apiDesc.GetControllerAndActionAttributes<SwaggerControllerNameAttribute>();
if (attribute.Any())
{
return attribute.First().ControllerName;
}
else
{
return apiDesc.ActionDescriptor.ControllerDescriptor.ControllerName;
}
});
}
WebApi使用约定而不是配置:是的,做得不错。我有一堆像这样的招摇过市的过滤器和扩展,我需要发布它们。
[SwaggerControllerName("My Simple Test")]
public class MySimpleTestController : ApiController
{
}