mat*_*ndr 3 asp.net attributes actionfilterattribute
我可以创建一个绕过动作的实际执行并为其返回值的ActionFilterAttribute吗?
对的,这是可能的.您可以设置覆盖时提供给您的过滤背景的结果OnActionExecuting在ActionFilterAttribute.
using System.Web.Mvc;
public sealed class SampleFilterAttribute : ActionFilterAttribute
{
public override void OnActionExecuting( ActionExecutingContext filterContext )
{
filterContext.Result = new RedirectResult( "http://google.com" );
}
}
Run Code Online (Sandbox Code Playgroud)
在源代码中,您可以看到设置Result筛选器上下文的属性会更改流程.
来自System.Web.Mvc.ControllerActionInvoker:
internal static ActionExecutedContext InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func<ActionExecutedContext> continuation)
{
filter.OnActionExecuting(preContext);
if (preContext.Result != null)
{
return new ActionExecutedContext(preContext, preContext.ActionDescriptor, true /* canceled */, null /* exception */)
{
Result = preContext.Result
};
}
// other code ommitted
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4006 次 |
| 最近记录: |