Beispiel #1
0
        protected ActionResult GetPage(int publicationId, int pageId)
        {
            using (new Tracer(publicationId, pageId))
            {
                try
                {
                    Common.Configuration.Localization localization = SetupLocalization(publicationId);

                    PageModel pageModel;
                    try
                    {
                        pageModel = ContentProviderExt.GetPageModel(pageId, localization);
                    }
                    catch (DxaItemNotFoundException ex)
                    {
                        Log.Info(ex.Message);
                        return(NotFound());
                    }

                    PageModelWithHttpResponseData pageModelWithHttpResponseData =
                        pageModel as PageModelWithHttpResponseData;
                    pageModelWithHttpResponseData?.SetHttpResponseData(System.Web.HttpContext.Current.Response);
                    SetupViewData(pageModel);
                    PageModel model = (EnrichModel(pageModel) as PageModel) ?? pageModel;
                    WebRequestContext.PageModel = model;
                    return(View(model.MvcData.ViewName, model));
                }
                catch (Exception ex)
                {
                    Log.Error(ex);
                    return(ServerError());
                }
            }
        }
        [FormatData] // must come first in execution order before output cache
        public virtual ActionResult Page(string pageUrl)
        {
            // The pageUrl parameter provided by ASP.NET MVC is relative to the Web App, but we need a server-relative (i.e. absolute) URL path.
            string absoluteUrlPath = Request.Url.AbsolutePath;

            using (new Tracer(pageUrl, absoluteUrlPath))
            {
                try
                {
                    bool   addIncludes = true;
                    object addIncludesViewData;
                    if (ViewData.TryGetValue(DxaViewDataItems.AddIncludes, out addIncludesViewData))
                    {
                        addIncludes = (bool)addIncludesViewData;
                    }

                    PageModel pageModel;
                    try
                    {
                        pageModel = ContentProvider.GetPageModel(absoluteUrlPath, WebRequestContext.Localization, addIncludes);
                    }
                    catch (DxaItemNotFoundException ex)
                    {
                        Log.Info(ex.Message);
                        return(NotFound());
                    }

                    PageModelWithHttpResponseData pageModelWithHttpResponseData = pageModel as PageModelWithHttpResponseData;
                    if (pageModelWithHttpResponseData != null)
                    {
                        pageModelWithHttpResponseData.SetHttpResponseData(System.Web.HttpContext.Current.Response);
                    }

                    SetupViewData(pageModel);
                    PageModel model = (EnrichModel(pageModel) as PageModel) ?? pageModel;

                    WebRequestContext.PageModel = model;

                    MvcData mvcData = model.MvcData;
                    if (mvcData == null)
                    {
                        throw new DxaException($"Page Model [{model}] has no MVC data.");
                    }

                    Log.Debug("Page Request for URL path '{0}' maps to Model [{1}] with View '{2}'", absoluteUrlPath, model, mvcData.ViewName);

                    return(View(mvcData.ViewName, model));
                }
                catch (Exception ex)
                {
                    Log.Error(ex);
                    return(ServerError());
                }
            }
        }