首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

MVC3如果用属性[ActionName("")]改变名字,怎么得到其函数名称

2012-05-01 
MVC3如果用属性[ActionName()]改变名字,如何得到其函数名称MVC3如果用属性[ActionName()]改变名字,如

MVC3如果用属性[ActionName("")]改变名字,如何得到其函数名称
MVC3如果用属性[ActionName("")]改变名字,如何得到其函数名称
如:
[ActionName("Row")]
public ActionResult GetRow(string id)
  {
  ....
  return View("Index");
  }

如何在过滤器中获得GetRow这个函数名:
public class LoggerFilter : FilterAttribute, IActionFilter
  {
   
  void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext)
  {
  这里。。。
  }
  }

[解决办法]
VS11/C# 4.5就有更直接的办法了

void IActionFilter.OnActionExecuting(ActionExecutingContext filterContext, [CallerMemberName] string memberName = "")
{
memberName就是调用者
}
[解决办法]
在框架内actiondescriptor有两个不是抽象的派生类,actiondescriptor的实例只可能是其中的一个.


C# code
        public void OnActionExecuting(ActionExecutingContext filterContext)        {            var descriptor = filterContext.ActionDescriptor;            if (descriptor is ReflectedActionDescriptor)            {                var concreteDescriptor = descriptor as ReflectedActionDescriptor;                var methodName = concreteDescriptor.MethodInfo.Name;                throw new Exception(methodName);            }            else if (descriptor is ReflectedAsyncActionDescriptor)            {                var concreteDescriptor = descriptor as ReflectedAsyncActionDescriptor;                var methodName = concreteDescriptor.AsyncMethodInfo.Name;                throw new Exception(methodName);            }        } 

热点排行