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
{
}