public void Render(ViewContext viewContext, TextWriter writer) { object instance = Activator.CreateInstance(_type); WebViewPage webViewPage = instance as WebViewPage; if (webViewPage == null) { throw new InvalidOperationException("Invalid view type"); } 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 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); }
void IView.Render(ViewContext viewContext, System.IO.TextWriter writer) { webViewPage.VirtualPath = virtualPath; webViewPage.ViewContext = viewContext; webViewPage.ViewData = viewContext.ViewData; WebPageRenderingBase startPage = StartPage.GetStartPage(webViewPage, "_ViewStart", FileExtensions); webViewPage.ExecutePageHierarchy(new WebPageContext(context: viewContext.HttpContext, page: null, model: null), writer, startPage); }
public void Render(ViewContext viewContext, TextWriter writer) { var webPageContext = new System.Web.WebPages.WebPageContext( controllerContext.HttpContext, viewPage, viewContext.ViewData.Model); viewPage.ExecutePageHierarchy( webPageContext, writer); }
public void Render(ViewContext viewContext, TextWriter writer) { Type viewType = BuildManager.GetCompiledType(this.ViewPath); object instance = Activator.CreateInstance(viewType); WebViewPage page = (WebViewPage)instance as WebViewPage; page.VirtualPath = this.ViewPath; page.ViewContext = viewContext; page.ViewData = viewContext.ViewData; page.InitHelpers(); WebPageContext pageContext = new WebPageContext(viewContext.HttpContext, null, null); WebPageRenderingBase startPage = StartPage.GetStartPage(page, StartPageFile, new string[] { "cshtml", "vbhtml" }); page.ExecutePageHierarchy(pageContext, writer, startPage); }
public Execute() { WebPageContext pageContext = new WebPageContext(); pageContext.View = this; pageContext.SectionWriters.Add("MySectionName", this.Section_MySectionName); var writer = HttpContext.Current.Response.Stream.AsTextWriter(); if (startPage != null) { startPage.ExecutePageHierarchy(pageContext, writer); } else { this.ExecutePageHierarchy(pageContext, writer); } }
public void Render(ViewContext viewContext, System.IO.TextWriter writer) { if (string.IsNullOrEmpty(template)) { template = "default"; } string viewPath = "~/Views/" + template + "/" + viewContext.RouteData.GetRequiredString("controller") + "/" + viewContext.RouteData.GetRequiredString("action") + ".cshtml"; Type viewType = BuildManager.GetCompiledType(viewPath); WebViewPage page = Activator.CreateInstance(viewType) as WebViewPage; page.Layout = layout; page.VirtualPath = viewPath; page.ViewContext = viewContext; page.ViewData = viewContext.ViewData; page.InitHelpers(); WebPageContext pageContext = new WebPageContext(viewContext.HttpContext, null, null); WebPageRenderingBase startPage = StartPage.GetStartPage(page, "_ViewStart", new string[] { "cshtml", "vbhtml" }); page.ExecutePageHierarchy(pageContext, writer, startPage); }
public void Render(ViewContext viewContext, TextWriter writer) { if (writer == null) { throw new ArgumentNullException("writer"); } if (page == null) { throw new InvalidOperationException("Cannot create a page from " + viewPath); } //damn, now why is this internal, how can you ever reuse the webviewpage then?? //page.OverridenLayoutPath = this.LayoutPath; if (!String.IsNullOrEmpty(this.LayoutPath)) { page.Layout = LayoutPath; } page.VirtualPath = viewPath; page.ViewContext = viewContext; page.ViewData = viewContext.ViewData; page.InitHelpers(); WebPageRenderingBase startPage = null; if (this.RunViewStartPages) { startPage = this.StartPageLookup(page, VirtualPathFactoryManagerViewEngine.ViewStartFileName, this.ViewStartFileExtensions); } var httpContext = viewContext.HttpContext; WebPageRenderingBase base4 = null; object model = null; //instead of page.OverridenLayoutPath: if (!String.IsNullOrEmpty(this.LayoutPath)) { page.Layout = LayoutPath; } page.ExecutePageHierarchy(new WebPageContext(httpContext, base4, model), writer, startPage); }
public static RazorViewExecutionResult ExecuteTemplate(WebViewPage <T> viewPage, T model, HttpContextBase httpContext) { var result = new RazorViewExecutionResult(); // Warning: lots of mocking below // mock HTTP state objects var context = new Mock <HttpContextBase>(); context.Setup(x => x.Items).Returns(new Dictionary <object, object>()); var response = new Mock <HttpResponseBase>(); response.Setup(x => x.ApplyAppPathModifier(It.IsAny <string>())) .Returns(new Func <string, string>(x => x)); context.Setup(x => x.Response).Returns(response.Object); var request = new Mock <HttpRequestBase>(); context.Setup(x => x.Request).Returns(request.Object); request.Setup(x => x.ApplicationPath).Returns("/"); request.Setup(x => x.IsLocal).Returns(true); var requestRouteContext = new RequestContext(context.Object, new RouteData()); // mock page view context var view = new Mock <ViewContext>(); view.Setup(x => x.HttpContext).Returns(context.Object); var viewMock = new Mock <IView>(); view.Setup(x => x.View).Returns(viewMock.Object); view.Setup(x => x.TempData).Returns(new TempDataDictionary()); view.Setup(x => x.ViewData).Returns(new ViewDataDictionary <T>(model)); var viewDataContainer = new Mock <IViewDataContainer>(); // mock view data used by the page viewDataContainer.Setup(c => c.ViewData).Returns(new ViewDataDictionary <T>(model)); // mock html helper var html = new Mock <HtmlHelper <T> >(view.Object, viewDataContainer.Object); var urlHelper = new Mock <UrlHelper>(requestRouteContext); // mock viewengine (for partial views fake resolution) var viewEngine = new Mock <IViewEngine>(); viewEngine.Setup(x => x.FindPartialView( It.IsAny <ControllerContext>(), It.IsAny <string>(), It.IsAny <bool>())) .Returns(new ViewEngineResult(viewMock.Object, viewEngine.Object)); using (var tw = new StringWriter()) using (var twNull = new StringWriter()) // this writer is used to discard unnecessary results { view.Setup(x => x.Writer).Returns(tw); // inject mocked context viewPage.Context = httpContext; var pageContext = new WebPageContext(context: context.Object, page: null, model: null); viewPage.ViewContext = view.Object; if (model != null) { viewPage.ViewData = new ViewDataDictionary <T>(model); } viewPage.Html = html.Object; viewPage.Url = urlHelper.Object; // insert mocked viewEngine for fake partial views resolution ViewEngines.Engines.Clear(); ViewEngines.Engines.Add(viewEngine.Object); // prepare view for execution, discard all generated results viewPage.PushContext(pageContext, twNull); viewPage.ExecutePageHierarchy(pageContext, twNull); // inject textwriter viewPage.OutputStack.Push(tw); // execute compiled page viewPage.Execute(); // find all sections and render them too var dynMethod = pageContext.GetType().GetProperty("SectionWritersStack", BindingFlags.NonPublic | BindingFlags.Instance); var res = (Stack <Dictionary <string, SectionWriter> >)dynMethod.GetValue(pageContext, null); foreach (var section in res.Peek()) { section.Value(); result.SectionNames.Add(section.Key); } result.Text = tw.ToString(); return(result); } }