Ejemplo n.º 1
0
        public virtual void Attach(ViewAttachmentPolicy policy, IViewProfile viewProfile, ViewBag bag, ActionCall action)
        {
            // No duplicate views!
            var outputNode = action.ParentChain().Output;

            if (outputNode.HasView(viewProfile.ConditionType))
            {
                return;
            }

            var log = new ViewAttachmentLog(viewProfile);

            action.Trace(log);

            foreach (var filter in policy.Filters())
            {
                var viewTokens = filter.Apply(action, bag);
                var count      = viewTokens.Count();

                if (count > 0)
                {
                    log.FoundViews(filter, viewTokens.Select(x => x.Resolve()));
                }

                if (count != 1)
                {
                    continue;
                }

                var token = viewTokens.Single().Resolve();
                outputNode.AddView(token, viewProfile.ConditionType);

                break;
            }
        }
Ejemplo n.º 2
0
 public ViewsForActionFilterExpression(ViewAttachmentPolicy policy)
 {
     _policy = policy;
 }
Ejemplo n.º 3
0
 public ViewAttachmentWorker(ViewBag views, ViewAttachmentPolicy policy)
 {
     _views  = views;
     _policy = policy;
 }