Agregando a la aplicación por Max Toro, aquí hay un par más para cuando usted tiene un modelo no nulo, pero no tienen información de tipo estático (estos dos métodos tienen que ser embebido en la aplicación Max ofrece)
Estos métodos funcionan bien cuando se haya recuperado dinámicamente nombres de propiedades para un modelo y la necesidad de llamar a los métodos HtmlHelper no genéricos que tienen un nombre en lugar de una expresión:
@Html.TextBox(propertyName)
por ejemplo.
public static HtmlHelper HtmlHelperFor(this HtmlHelper htmlHelper, object model)
{
return HtmlHelperFor(htmlHelper, model, null);
}
public static HtmlHelper HtmlHelperFor(this HtmlHelper htmlHelper, object model, string htmlFieldPrefix)
{
var t = model.GetType();
var viewDataContainer = CreateViewDataContainer(htmlHelper.ViewData, model);
TemplateInfo templateInfo = viewDataContainer.ViewData.TemplateInfo;
if(!String.IsNullOrEmpty(htmlFieldPrefix))
templateInfo.HtmlFieldPrefix = templateInfo.GetFullHtmlFieldName(htmlFieldPrefix);
ViewContext viewContext = htmlHelper.ViewContext;
ViewContext newViewContext = new ViewContext(viewContext.Controller.ControllerContext, viewContext.View, viewDataContainer.ViewData, viewContext.TempData, viewContext.Writer);
var gt = typeof(HtmlHelper<>).MakeGenericType(t);
return Activator.CreateInstance(gt, newViewContext, viewDataContainer, htmlHelper.RouteCollection) as HtmlHelper;
}
Solución más limpia. Funciona de maravilla. –