我想为特定控制器的所有视图添加一些数据。
我已经有了一些web-apps,当一个请求到达服务器时,他们会先运行。如果我做另一个东西,比如
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
        {
            AddMemberLogin(); //Add the Member if he is logged in
            AddApprovalModeToViewData();
            ViewData["call3"] = //called func;
            ViewData["call2"] = //called func;
            ViewData["call1"] = //called func;
        }如果我在控制器中这样做,我发现他们没有运行已经实现的函数。
他们有没有办法同时运行这两个函数,但是当请求到达这个控制器时,我想
发布于 2011-01-06 15:36:02
您可以使用操作过滤器:
public class MyFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        base.OnActionExecuted(filterContext);
        filterContext.Controller.ViewData["call3"] = ...
        filterContext.Controller.ViewData["call2"] = ...
        filterContext.Controller.ViewData["call1"] = ...
    }
}然后用这个属性装饰你的控制器:
[MyFilter]
public class BaseController: Controller {}https://stackoverflow.com/questions/4612762
复制相似问题