Skip to content

Instantly share code, notes, and snippets.

@uluhonolulu
Created April 18, 2013 19:27
Show Gist options
  • Save uluhonolulu/5415550 to your computer and use it in GitHub Desktop.
Save uluhonolulu/5415550 to your computer and use it in GitHub Desktop.
Partial rendering w/o an input model
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