public override void Execute(WxeContext context) { ArgumentUtility.CheckNotNull("context", context); if (_wxeHandler != null) { context.HttpContext.Handler = _wxeHandler; _wxeHandler = null; } if (!_isExecutionStarted) { _isExecutionStarted = true; _isPostBack = false; } else { _isPostBack = true; } _userControlExecutor.Execute(context); try { PageStep.PageExecutor.ExecutePage(context, PageStep.Page, PageStep.IsPostBack); } finally { if (_userControlExecutor.IsReturningPostBack) { _userControlExecutor = NullUserControlExecutor.Null; } } }
public void ExecuteFunctionExternalByRedirect(PreProcessingSubFunctionStateParameters parameters, WxeReturnOptions returnOptions) { ArgumentUtility.CheckNotNull("parameters", parameters); ArgumentUtility.CheckNotNull("returnOptions", returnOptions); if (_executionState.IsExecuting) { throw new InvalidOperationException("Cannot execute function while another function executes."); } _wxeHandler = parameters.Page.WxeHandler; _executionState = new ExecuteByRedirect_PreProcessingSubFunctionState(this, parameters, returnOptions); Execute(); }
public virtual void Initialize(HttpContext context) { if (ControlHelper.IsDesignMode(_control)) { return; } ArgumentUtility.CheckNotNull("context", context); if (_control is Page) { _wxeHandler = context.Handler as WxeHandler; } else { IWxePage wxePage = _control.Page as IWxePage; if (wxePage == null) { throw new InvalidOperationException(string.Format("'{0}' can only be added to a Page implementing the IWxePage interface.", _control.GetType().FullName)); } _wxeHandler = wxePage.WxeHandler; } if (_wxeHandler == null) { throw new HttpException(string.Format("No current WxeHandler found. Most likely cause of the exception: " + "The page '{0}' has been called directly instead of using a WXE Handler to invoke the associated WXE Function.", _control.Page.GetType())); } WxeStep executingStep = _wxeHandler.RootFunction.ExecutingStep; if (executingStep is WxeUserControlStep) { _currentUserControlStep = (WxeUserControlStep)executingStep; _currentUserControlFunction = WxeStep.GetFunction(_currentUserControlStep); _currentPageStep = _currentUserControlStep.PageStep; } else { _currentUserControlStep = null; _currentUserControlFunction = null; _currentPageStep = (WxePageStep)executingStep; } _currentPageFunction = WxeStep.GetFunction(_currentPageStep); }
/// <summary> /// Displays the <see cref="WxePageStep"/>'s page or the sub-function that has been invoked by the /// <see cref="ExecuteFunction(Infrastructure.WxePageStepExecutionStates.PreProcessingSubFunctionStateParameters,Infrastructure.WxeRepostOptions)"/> method. /// </summary> /// <include file='..\doc\include\ExecutionEngine\WxePageStep.xml' path='WxePageStep/Execute/*' /> public override void Execute(WxeContext context) { ArgumentUtility.CheckNotNull("context", context); if (_wxeHandler != null) { context.HttpContext.Handler = _wxeHandler; _wxeHandler = null; } if (!_isExecutionStarted) { _isExecutionStarted = true; _isPostBack = false; } else { _isPostBack = true; } ClearIsOutOfSequencePostBack(); ClearReturnState(); while (_executionState.IsExecuting) { _executionState.ExecuteSubFunction(context); } _userControlExecutor.Execute(context); try { _pageExecutor.ExecutePage(context, Page, _isPostBack); } finally { if (_userControlExecutor.IsReturningPostBack) { _userControlExecutor = NullUserControlExecutor.Null; } ClearIsOutOfSequencePostBack(); ClearReturnState(); } }
public void ExecuteFunction(WxeUserControl userControl, WxeFunction subFunction, Control sender, bool usesEventTarget) { ArgumentUtility.CheckNotNull("userControl", userControl); ArgumentUtility.CheckNotNull("subFunction", subFunction); ArgumentUtility.CheckNotNull("sender", sender); IWxePage wxePage = userControl.WxePage; _wxeHandler = wxePage.WxeHandler; _userControlExecutor = new UserControlExecutor(this, userControl, subFunction, sender, usesEventTarget); IReplaceableControl replaceableControl = userControl; replaceableControl.Replacer.Controls.Clear(); wxePage.SaveAllState(); Execute(); }