public void Render(ViewContext viewContext, TextWriter writer)
        {
            if (viewContext == null)
            {
                throw new ArgumentNullException("viewContext");
            }

            object instance = null;

            Type type = BuildManager.GetCompiledType(ViewPath);

            if (type != null)
            {
                instance = ViewPageActivator.Create(_controllerContext, type);
            }

            if (instance == null)
            {
                throw new InvalidOperationException(
                          String.Format(
                              CultureInfo.CurrentCulture,
                              MvcResources.CshtmlView_ViewCouldNotBeCreated,
                              ViewPath));
            }

            RenderView(viewContext, writer, instance);
        }
        public void Render(ViewContext viewContext, TextWriter writer)
        {
            var webViewPage = viewPageActivator.Create(viewContext.Controller.ControllerContext, type) as WebViewPage;

            if (webViewPage == null)
            {
                throw new InvalidOperationException("Invalid view type");
            }

            webViewPage.VirtualPath = virtualPath;
            webViewPage.ViewContext = viewContext;
            webViewPage.ViewData    = viewContext.ViewData;
            webViewPage.InitHelpers();
            webViewPage.VirtualPathFactory = virtualPathFactory;

            WebPageRenderingBase startPage = null;

            if (this.RunViewStartPages)
            {
                startPage = StartPageHelper.GetStartPage(webViewPage, "_ViewStart", ViewStartFileExtensions);
            }

            var pageContext = new WebPageContext(viewContext.HttpContext, webViewPage, startPage);

            webViewPage.ExecutePageHierarchy(pageContext, writer, startPage);
        }
Exemple #3
0
        public object CreateInstance(string virtualPath)
        {
            virtualPath = EnsureVirtualPathPrefix(virtualPath);
            Type type;

            if (!PreemptPhysicalFiles && VirtualPathProvider.FileExists(virtualPath))
            {
                // If we aren't pre-empting physical files, use the BuildManager to create _ViewStart instances if the file exists on disk.

                // There is no build provider registered for the extension '.cshtml'.
                return(BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(WebPageRenderingBase)));
            }

            if (UsePhysicalViewsIfNewer && IsPhysicalFileNewer(virtualPath))
            {
                // If the physical file on disk is newer and the user's opted in this behavior, serve it instead.
                return(BuildManager.CreateInstanceFromVirtualPath(virtualPath, typeof(WebViewPage)));
            }

            if (_mappings.TryGetValue(virtualPath, out type))
            {
                return(_viewPageActivator.Create((ControllerContext)null, type));
            }
            return(null);
        }
        public void Render(ViewContext viewContext, TextWriter writer)
        {
            WebViewPage webViewPage = _viewPageActivator.Create(viewContext.Controller.ControllerContext, _type) as WebViewPage;

            if (webViewPage == null)
            {
                throw new InvalidOperationException("Invalid view type");
            }

            if (!String.IsNullOrEmpty(_masterPath))
            {
                _overriddenLayoutSetter.Value(webViewPage, _masterPath);
            }

            webViewPage.VirtualPath = _virtualPath;
            webViewPage.ViewContext = viewContext;
            webViewPage.ViewData    = viewContext.ViewData;
            webViewPage.InitHelpers();

            WebPageRenderingBase startPage = null;

            if (this.RunViewStartPages)
            {
                startPage = StartPage.GetStartPage(webViewPage, "_ViewStart", ViewStartFileExtensions);
            }

            var pageContext = new WebPageContext(viewContext.HttpContext, webViewPage, null);

            webViewPage.ExecutePageHierarchy(pageContext, writer, startPage);
        }
Exemple #5
0
        public object CreateInstance(string virtualPath)
        {
            Type type;

            if (mappings.TryGetValue(virtualPath, out type))
            {
                return(viewPageActivator.Create((ControllerContext)null, type));
            }
            return(null);
        }
Exemple #6
0
        /// <summary>
        /// Creates the specified controller context.
        /// </summary>
        /// <param name="controllerContext">The controller context.</param>
        /// <param name="type">The type.</param>
        /// <returns></returns>
        public object Create(ControllerContext controllerContext, Type type)
        {
            if (type == null)
            {
                return(null);
            }

            Type activatorType = ViewActivatorRegistry.Matching(type);

            IViewPageActivator activator = activatorType != null?
                                           Container.GetServices(activatorType) as IViewPageActivator:
                                           null;

            object view = activator != null?
                          activator.Create(controllerContext, type) :
                              Container.GetService(type) ?? Activator.CreateInstance(type);

            return(view);
        }