考虑以下情况。在我的控制器中,我有:
public ActionResult Edit(int id)
{
...
}
[HttpPost]
public ActionResult Edit(Model model)
{
...
}
我还有一个ActionFilterAttribute
,它适用于同一控制器的其他一些动作。在OnActionExecuting
方法中,我需要获取ActionDescriptor
HttpGet
操作的Edit
:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
// as this is called from the same controller, I use
ActionDescriptor action = filterContext.ActionDescriptor.ControllerDescriptor
.FindAction(filterContext.Controller.ControllerContext, "Edit");
...
}
问题是,FindAction
方法会在HttpPost
请求的情况下向Edit
POST
操作返回“引用”。如何让它仅查看HttpGet
个动作?
答案 0 :(得分:1)
你可以使用may属性吗?
public class FooAttribute
{
}
[FooAttribute]
public ActionResult Edit(int id)
{
...
}
你可以查看OnActionExecution; 例子;
var isHasAttribute= filterContext.ActionDescriptor.IsDefined(typeof(FooAttribute), true);