mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Merge
--HG-- branch : theming
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Web;
|
using System.Web;
|
||||||
using Autofac;
|
using Autofac;
|
||||||
|
using Microsoft.WebPages;
|
||||||
using Orchard.DisplayManagement;
|
using Orchard.DisplayManagement;
|
||||||
using Orchard.Localization;
|
using Orchard.Localization;
|
||||||
using Orchard.Mvc.Spooling;
|
using Orchard.Mvc.Spooling;
|
||||||
@@ -51,26 +52,27 @@ namespace Orchard.Mvc.ViewEngines.Razor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public IDisposable Capture(Action<IHtmlString> callback) {
|
public IDisposable Capture(Action<IHtmlString> callback) {
|
||||||
return new ViewContextSubstitution(this, callback);
|
return new CaptureScope(this, callback);
|
||||||
|
}
|
||||||
|
|
||||||
|
class CaptureScope : IDisposable {
|
||||||
|
readonly WebPageBase _viewPage;
|
||||||
|
readonly Action<IHtmlString> _callback;
|
||||||
|
|
||||||
|
public CaptureScope(WebPageBase viewPage, Action<IHtmlString> callback) {
|
||||||
|
_viewPage = viewPage;
|
||||||
|
_callback = callback;
|
||||||
|
_viewPage.OutputStack.Push(new HtmlStringWriter());
|
||||||
|
}
|
||||||
|
|
||||||
|
void IDisposable.Dispose() {
|
||||||
|
var writer = (HtmlStringWriter)_viewPage.OutputStack.Pop();
|
||||||
|
_callback(writer);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract class WebViewPage : WebViewPage<dynamic> {
|
public abstract class WebViewPage : WebViewPage<dynamic> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public class ViewContextSubstitution : IDisposable {
|
|
||||||
public dynamic _viewPage;
|
|
||||||
private readonly Action<IHtmlString> _callback;
|
|
||||||
|
|
||||||
public ViewContextSubstitution(dynamic viewPage, Action<IHtmlString> callback) {
|
|
||||||
_viewPage = viewPage;
|
|
||||||
_callback = callback;
|
|
||||||
_viewPage.OutputStack.Push(new HtmlStringWriter());
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose() {
|
|
||||||
var script = _viewPage.OutputStack.Pop().ToString();
|
|
||||||
_callback(new HtmlString(script));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user