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); }
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); }
public object CreateInstance(string virtualPath) { Type type; if (mappings.TryGetValue(virtualPath, out type)) { return(viewPageActivator.Create((ControllerContext)null, type)); } return(null); }
/// <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); }