Estoy tratando de mostrar un modelo de vista usando una plantilla de editor que envuelve el modelo en un conjunto de campos antes de aplicar una plantilla de editor de objetos base.¿Se puede pasar un modelo a través de varias plantillas de editor?
Mi opinión:
@model Mvc3VanillaApplication.Models.ContactModel
@using (Html.BeginForm())
{
@Html.EditorForModel("Fieldset")
}
utiliza una plantilla de campos (Visto/Común/EditorTemplates/Fieldset.cshtml):
<fieldset>
<legend>@ViewData.ModelMetadata.DisplayName</legend>
@Html.EditorForModel()
</fieldset>
que a su vez utiliza una plantilla básica para todos los objetos (Views/Shared/EditorTemplates/Object.cshtml):
@foreach (var prop in ViewData.ModelMetadata.Properties.Where(x =>
x.ShowForEdit && !x.IsComplexType && !ViewData.TemplateInfo.Visited(x)))
{
@Html.Label(prop.PropertyName, prop.DisplayName)
@Html.Editor(prop.PropertyName)
}
Esa es mi intención de todos modos. El problema es que mientras la página se representa con un campo y una leyenda, la plantilla de objeto no se aplica, por lo que no se muestran controles de entrada.
Si cambio la vista para no especificar la plantilla "Fieldset", las propiedades de mi modelo se representan utilizando la plantilla Object, por lo que no es posible que no se encuentre mi plantilla Object.
¿Es posible pasar el mismo modelo a través de varias plantillas?
Por lo que vale la pena, el modelo de vista se parece a esto:
namespace Mvc3VanillaApplication.Models
{
[System.ComponentModel.DisplayName("Contact Info")]
public class ContactModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
}
Así complican. ¿Puedes publicar tu código de modelo de vista? Para que podamos ser más claros acerca de su pregunta. Como sabía, tratas de hacer un componente común para usar para todos los editores, ¿verdad? – thangchung
@ThangChung Bueno, estoy sobreescribiendo la plantilla del editor de objetos porque es pesada (envolviendo todo en divs) y quiero extenderla para elegir otras convenciones. Más allá de eso, estoy usando la plantilla fieldset para que cada modelo se muestre en un fieldset que se convierte en una página en un asistente a través de javascript. –