在asp核心中使用web api返回控制器和操作的信息

时间:2018-03-14 07:23:50

标签: asp.net-core asp.net-web-api2 asp.net-core-2.0 asp.net-core-webapi

我需要在asp核心中使用web api返回动作和控制器信息。

我有这个控制器:

    [BreadCrumb(Order = 0)]
    [DisplayName("سطح دسترسی پویا")]
    [Route("api/[controller]")]
    public class ValuesController : Controller
    {
        // GET api/values
        [DisplayName("برگشت اطلاعات")]
        [BreadCrumb(Order = 1)]
        [HttpGet]
        public IEnumerable<string> Get()
        {
            return new string[] { "value1", "value2" };
        }
     }

现在我需要返回DisplayName和所有信息。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

您可以使用以下代码:

var controllerInfo = ControllerContext.ActionDescriptor.ControllerTypeInfo.CustomAttributes;
var methodInfo = ControllerContext.ActionDescriptor.MethodInfo.CustomAttributes;

答案 1 :(得分:0)

你可以尝试:

[DisplayName("Controller Display Name")]
[Route("api/[controller]")]
public class ValuesController : Controller
{
    // GET api/values
    [HttpGet]
    [DisplayName("Action Display Name")]
    public IEnumerable<string> Get()
    {
        var ControllerDisplayName = string.Empty;
        var ActionsDisplayName = string.Empty;

        var ControllerAttributes = ControllerContext.ActionDescriptor.ControllerTypeInfo.GetCustomAttributes(typeof(DisplayNameAttribute), true);
        if (ControllerAttributes.Length > 0)
        {
            ControllerDisplayName = ((DisplayNameAttribute)ControllerAttributes[0]).DisplayName;
        }

        var ActionAttributes = (ControllerContext.ActionDescriptor.MethodInfo.GetCustomAttributes(typeof(DisplayNameAttribute), false));
        if (ActionAttributes.Length > 0)
        {
            ActionsDisplayName = ((DisplayNameAttribute)ActionAttributes[0]).DisplayName;
        }

        return new string[] { ControllerDisplayName, ActionsDisplayName };
    }
}