1

如果我定义一个IActionFilter像这样实现的动作过滤器:

public class FooAttribute : FilterAttribute, IActionFilter
{
    public void OnActionExecuted(ActionExecutedContext filterContext)
    { }

    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        filterContext.Result = new ContentResult 
        { 
            Content = "Test", 
            ContentEncoding = Encoding.UTF8, 
            ContentType = "text" 
        };
    }
}

并将其应用于以下操作方法:

[Foo]
public ActionResult Index()
{
    return View();
}

当我这样做时,索引操作代码不会运行,OnResultExecuted 方法也不会运行。这是因为我在方法中设置了Result属性吗?OnActionExecuting是否还有其他原因会导致正常流程中断?

4

1 回答 1

0

我认为它只是具有这种效果的 Result 属性。请参见此处: http: //books.google.be/books ?id=gzfFQrs_qQAC&lpg=PA442&ots=EXCefpt5-O&dq=iactionfilter%20onactionexecuting&pg=PA442#v=onepage&q=iactionfilter% 20onactionexecuting&f=false

用户可以通过将 Result 设置为非空值来取消操作

于 2012-05-17T18:11:24.863 回答