Asp.net mvc 动作方法mvc的显示名称数据注释
我想为所有动作方法创建友好的名称Asp.net mvc 动作方法mvc的显示名称数据注释,asp.net-mvc,data-annotations,Asp.net Mvc,Data Annotations,我想为所有动作方法创建友好的名称 [LogActionFilter] public class ServiceController : ApiController { [DisplayName("User log in")] public object Login() { //my logic for login and returns object
[LogActionFilter]
public class ServiceController : ApiController
{
[DisplayName("User log in")]
public object Login()
{
//my logic for login and returns object
}
}
在action filter属性中,我想获取此操作的显示名称
public class LogActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
var actionName = actionContext.Request.RequestUri.AbsolutePath.Split('/').Last();
//var actionFriendlyName = getDisplayName(actionName); How to get display name?
}
}
如何获取
DisplayName
属性的值?我使用此函数获取方法的属性:
public static T GetAttributeFrom<T>(object instance, string propertyName) where T : Attribute
{
var attrType = typeof(T);
var property = instance.GetType().GetMethod(propertyName);
return (T)property.GetCustomAttributes(attrType, false).First();
}
公共静态T GetAttributeFrom(对象实例,字符串propertyName),其中T:Attribute
{
var attrType=typeof(T);
var property=instance.GetType().GetMethod(propertyName);
return(T)property.GetCustomAttributes(attrType,false).First();
}
用法:
var actionName = actionContext.Request.RequestUri.AbsolutePath.Split('/').Last();
var displayNameAttribute = GetAttributeFrom<DisplayNameAttribute>(new ServiceController(), actionName);
var methodFriendlyName = displayNameAttribute.DisplayName;
var actionName=actionContext.Request.RequestUri.AbsolutePath.Split('/').Last();
var displayNameAttribute=GetAttributeFrom(新的ServiceController(),actionName);
var methodFriendlyName=displayNameAttribute.DisplayName;
为什么投票被否决?请简要说明。您可以使用反射(参考示例)。但是不清楚你想在这里做什么,或者你将如何使用它。@Irfanyusan如果我没有投反对票,但如果你在任何问题上悬停在“投反对票”按钮上,它会解释应该投反对票的原因。无论如何,您为什么要获取此名称,您打算在操作筛选器中如何使用它?不清楚目的是什么。此外,这些数据注释用于字段(即类的属性),而不是方法。