2012-09-05 09:35:24 +07:00
|
|
|
using System.Web.Mvc;
|
|
|
|
|
|
2012-09-29 08:07:00 +07:00
|
|
|
namespace Umbraco.Web.Mvc
|
2012-09-05 09:35:24 +07:00
|
|
|
{
|
2013-08-30 12:03:16 +10:00
|
|
|
internal static class ViewDataContainerExtensions
|
2012-09-05 09:35:24 +07:00
|
|
|
{
|
|
|
|
|
private class ViewDataContainer : IViewDataContainer
|
|
|
|
|
{
|
|
|
|
|
public ViewDataContainer()
|
|
|
|
|
{
|
|
|
|
|
ViewData = new ViewDataDictionary();
|
|
|
|
|
}
|
|
|
|
|
public ViewDataDictionary ViewData { get; set; }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Creates a new IViewDataContainer but with a filtered ModelState
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="container"></param>
|
|
|
|
|
/// <param name="prefix"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static IViewDataContainer FilterContainer(this IViewDataContainer container, string prefix)
|
|
|
|
|
{
|
|
|
|
|
var newContainer = new ViewDataContainer();
|
|
|
|
|
newContainer.ViewData.ModelState.Merge(container.ViewData.ModelState, prefix);
|
2014-02-10 18:34:12 +11:00
|
|
|
//change the html field name too
|
|
|
|
|
newContainer.ViewData.TemplateInfo.HtmlFieldPrefix = prefix;
|
2012-09-05 09:35:24 +07:00
|
|
|
return newContainer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// Returns a new IViewContainer based on the current one but supplies a different model to the ViewData
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="container"></param>
|
|
|
|
|
/// <param name="model"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
public static IViewDataContainer CopyWithModel(this IViewDataContainer container, object model)
|
|
|
|
|
{
|
|
|
|
|
return new ViewDataContainer
|
|
|
|
|
{
|
|
|
|
|
ViewData = new ViewDataDictionary(container.ViewData)
|
|
|
|
|
{
|
|
|
|
|
Model = model
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|