Code namespace Xiaozhuang.Web { publicclass Global : System.Web.HttpApplication, IContainerAccessor {
Members#region Members
privatestatic IUnityContainer _container;
#endregion
Properties#region Properties
/**////<summary> /// The Unity container for the current application ///</summary> publicstatic IUnityContainer Container { get { return _container; } set { _container = value; } }
#endregion
IContainerAccessor Members#region IContainerAccessor Members
/**////<summary> /// Returns the Unity container of the application ///</summary> IUnityContainer IContainerAccessor.Container { get { return Container; } }
Code namespace Xiaozhuang.Web { publicclass ControlPage : Page { publicoverridevoid VerifyRenderingInServerForm(Control control) { //base.VerifyRenderingInServerForm(control); } } } namespace Xiaozhuang.Web { ///<summary> /// A generic user control rendering helper, basically you initialise the view manager and /// call render to render that control, but the benifit of this version is you can access the control /// the view manager is rendering and can set custom properties etc. ///</summary> ///<typeparam name="T">The type of the control you are rendering</typeparam> publicclass ViewManager<T>where T : Control {
#region Properties
private T _control =default(T);
///<summary> /// Gives you access to the control you are rendering allows /// you to set custom properties etc. ///</summary> public T Control { get { return _control; } }
// Used as a placeholder page to render the control on. private ControlPage _holder =null;
#endregion
#region Constructor
///<summary> /// Default constructor for this view manager, pass in the path for the control /// that this view manager is render. ///</summary> ///<param name="inPath"></param> public ViewManager(string path) { //Init the holder page _holder =new ControlPage();
// Create an instance of our control _control = (T)_holder.LoadControl(path);
// Add it to our holder page. _holder.Controls.Add(_control); }
#endregion
#region Rendering
///<summary> /// Renders the current control. ///</summary> ///<returns></returns> publicstring Render() { StringWriter sw =new StringWriter();
// Execute the page capturing the output in the stringwriter. HttpContext.Current.Server.Execute(_holder, sw, false);