using Microsoft.AspNetCore.Mvc.Rendering; using Microsoft.AspNetCore.Mvc.ViewFeatures; namespace Umbraco.Extensions { public static class ViewContextExtensions { /// /// Creates a new ViewContext from an existing one but specifies a new Model for the ViewData /// /// /// /// public static ViewContext CopyWithModel(this ViewContext vc, object model) { return new ViewContext { View = vc.View, Writer = vc.Writer, ActionDescriptor = vc.ActionDescriptor, FormContext = vc.FormContext, HttpContext = vc.HttpContext, RouteData = vc.RouteData, TempData = vc.TempData, ViewData = new ViewDataDictionary(vc.ViewData) { Model = model }, ClientValidationEnabled = vc.ClientValidationEnabled, ExecutingFilePath = vc.ExecutingFilePath, ValidationMessageElement = vc.ValidationMessageElement, Html5DateRenderingMode = vc.Html5DateRenderingMode, ValidationSummaryMessageElement = vc.ValidationSummaryMessageElement }; } public static ViewContext Clone(this ViewContext vc) { return new ViewContext { View = vc.View, Writer = vc.Writer, ActionDescriptor = vc.ActionDescriptor, FormContext = vc.FormContext, HttpContext = vc.HttpContext, RouteData = vc.RouteData, TempData = vc.TempData, ViewData = new ViewDataDictionary(vc.ViewData), ClientValidationEnabled = vc.ClientValidationEnabled, ExecutingFilePath = vc.ExecutingFilePath, ValidationMessageElement = vc.ValidationMessageElement, Html5DateRenderingMode = vc.Html5DateRenderingMode, ValidationSummaryMessageElement = vc.ValidationSummaryMessageElement }; } //public static ViewContext CloneWithWriter(this ViewContext vc, TextWriter writer) //{ // return new ViewContext // { // Controller = vc.Controller, // HttpContext = vc.HttpContext, // RequestContext = vc.RequestContext, // RouteData = vc.RouteData, // TempData = vc.TempData, // View = vc.View, // ViewData = vc.ViewData, // FormContext = vc.FormContext, // ClientValidationEnabled = vc.ClientValidationEnabled, // UnobtrusiveJavaScriptEnabled = vc.UnobtrusiveJavaScriptEnabled, // Writer = writer // }; //} } }