Created
April 18, 2013 19:27
-
-
Save uluhonolulu/5415550 to your computer and use it in GitHub Desktop.
Partial rendering w/o an input model
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static class ModellessPartialExtension { | |
public static string Partial<THandler>(this IFubuPage page, string methodName) { | |
var factory = page.Get<IBehaviorFactory>(); | |
var writer = page.Get<IOutputWriter>(); | |
var graph = page.Get<BehaviorGraph>(); | |
var serviceArguments = page.Get<ServiceArguments>(); | |
return Partial<THandler>(methodName, factory, graph, serviceArguments, writer); | |
} | |
public static string Partial<THandler>(string methodName, IBehaviorFactory behaviorFactory, BehaviorGraph graph, ServiceArguments serviceArguments, IOutputWriter writer) { | |
var thisChain = | |
graph.Behaviors.FirstOrDefault( | |
chain => { | |
var actionCall = chain.FirstCall(); | |
return actionCall != null && actionCall.HandlerType == typeof(THandler) && actionCall.Method.Name == methodName; | |
}); | |
var actionBehavior = behaviorFactory.BuildBehavior(serviceArguments, thisChain.UniqueId); | |
return writer.Record(() => actionBehavior.InvokePartial()).GetText(); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment