Пример #1
0
        ActionResult RunAction(Action action, Framework.Core.Entities.User userToRunAs, string currentPageName, string submittedPageNames, bool back, AuthorisedAction auth = null)
        {
            MultiPageAction.Page givenPage = null;

            model        = new ActionViewModel(HasAccessToNewActions);
            model.Action = action;

            if (action is MultiPageAction)
            {
                givenPage = PrepareMultipageAction(action, userToRunAs, currentPageName, submittedPageNames, back, model);
            }
            else if (Request.HttpMethod == "POST")
            {
                SetPostValues(action, action.Fields);
            }

            if (Request.HttpMethod == "POST")
            {
                action.BeforeRun(true);
                if (!action.AccessibleTo(userToRunAs, DbContext) && !(action is Login))
                {
                    Response.Redirect(Url.Action("MainPage", "LandingPage") + "?ReturnUrl=" + Request.Url);
                }

                return(HandlePostAction(action, userToRunAs, back, givenPage, model, auth));
            }
            else

            {
                SetGetParams(action);
                action.BeforeRun(false);
                if (!action.AccessibleTo(userToRunAs, DbContext) && !(action is Login))
                {
                    Response.Redirect(Url.Action("MainPage", "LandingPage") + "?ReturnUrl=" + Request.Url);
                }

                if (action.Fields.Count() == 0)
                {
                    if (action.RedirectLocation != null && action.RedirectLocation is RedirectToURL)
                    {
                        Response.Redirect((action.RedirectLocation as RedirectToURL).Url);
                    }

                    return(View(EmptyActionViewPathPrefix, model));
                }
                else
                {
                    return(View(ActionViewPathPrefix, model)); // method was not post
                }
            }
        }