Added Capture method for WebForms

--HG--
branch : theming
This commit is contained in:
Sebastien Ros
2010-09-13 18:10:52 -07:00
parent 5776c5ab58
commit add0757b33
2 changed files with 21 additions and 20 deletions

View File

@@ -51,29 +51,30 @@ namespace Orchard.Mvc {
} }
public IDisposable Capture(Action<IHtmlString> callback) { public IDisposable Capture(Action<IHtmlString> callback) {
return new ViewContextSubstitution(Writer, callback); return new CaptureScope(Writer, callback);
} }
} public class CaptureScope : IDisposable {
public class ViewContextSubstitution : IDisposable {
private readonly HtmlTextWriter _context; private readonly HtmlTextWriter _context;
private readonly Action<IHtmlString> _callback; private readonly Action<IHtmlString> _callback;
private readonly TextWriter _oldWriter; private readonly TextWriter _oldWriter;
private readonly TextWriter _writer; private readonly HtmlStringWriter _writer;
public ViewContextSubstitution(HtmlTextWriter context, Action<IHtmlString> callback) { public CaptureScope(HtmlTextWriter context, Action<IHtmlString> callback) {
_context = context; _context = context;
_oldWriter = _context.InnerWriter; _oldWriter = _context.InnerWriter;
_callback = callback; _callback = callback;
_context.InnerWriter = _writer = new StringWriter(); _context.InnerWriter = _writer = new HtmlStringWriter();
} }
public void Dispose() { public void Dispose() {
_callback(new HtmlString(_writer.ToString())); _callback(_writer);
_context.InnerWriter = _oldWriter; _context.InnerWriter = _oldWriter;
} }
} }
}
public class ViewPage : ViewPage<dynamic> { public class ViewPage : ViewPage<dynamic> {
} }
} }

View File

@@ -53,7 +53,7 @@ namespace Orchard.Mvc {
} }
public IDisposable Capture(Action<IHtmlString> callback) { public IDisposable Capture(Action<IHtmlString> callback) {
return new ViewContextSubstitution(Writer, callback); return new ViewPage.CaptureScope(Writer, callback);
} }
} }