using System.Web.Mvc; namespace Umbraco.Web.Mvc { internal static class ViewDataContainerExtensions { private class ViewDataContainer : IViewDataContainer { public ViewDataContainer() { ViewData = new ViewDataDictionary(); } public ViewDataDictionary ViewData { get; set; } } /// /// Creates a new IViewDataContainer but with a filtered ModelState /// /// /// /// public static IViewDataContainer FilterContainer(this IViewDataContainer container, string prefix) { var newContainer = new ViewDataContainer(); newContainer.ViewData.ModelState.Merge(container.ViewData.ModelState, prefix); //change the html field name too newContainer.ViewData.TemplateInfo.HtmlFieldPrefix = prefix; return newContainer; } /// /// Returns a new IViewContainer based on the current one but supplies a different model to the ViewData /// /// /// /// public static IViewDataContainer CopyWithModel(this IViewDataContainer container, object model) { return new ViewDataContainer { ViewData = new ViewDataDictionary(container.ViewData) { Model = model } }; } } }