在MVC上设置description属性

本文关键字:description 属性 设置 MVC | 更新日期: 2023-09-27 18:03:44

是否可以在动作上设置描述?如果可能的话,我怎样才能得到描述?

的例子:

public class TestingController : Controller
{
    [Description("Description Test")]
    public ActionResult Index()
    { 
        return View();
    }
}

在MVC上设置description属性

您可以这样做:首先需要定义一个属性,然后使用反射来提取其信息:

[AttributeUsage(AttributeTargets.All, Inherited = true)]
    public class DescriptionAttribute : Attribute
    {
        private readonly string _title;
        public string Title
        {
            get { return _title; }
        }
        public DescriptionAttribute(string title)
        {
            _title = title;
        }
    }
    public static class Extensions
    {
        public static string GetDisplayName(this MemberInfo target)
        {
            return target.GetCustomAttributes(typeof(DescriptionAttribute), true)
                .Cast<DescriptionAttribute>().Select(d => d.Title)
                .SingleOrDefault() ?? target.Name;
        }
    }

并这样使用:

public class TestingController : Controller
{
    [Description("Description Test")]
    public ActionResult Index()
    { 
        return View();
    }
}

你可以这样使用反射提取信息:

var controllers =
                typeof (MvcApplication).Assembly.GetTypes()
                    .Where(typeof (IController).IsAssignableFrom).Where(method => method.IsPublic &&  method.IsDefined(typeof(DescriptionAttribute), true));