Quiero crear una plantilla de visualización solo para propiedades de cadena y usar la configuración predeterminada para todas las demás.ASP.NET MVC 4 define la plantilla de visualización solo para cadena
Traté de hacer una string.cshtml en Vistas/shared/DisplayTemplates con los contenidos siguientes:
@model string
@Html.TextBoxFor(m => m, new { @readonly = "readonly" })
ahora tengo un problema cuando intento abrir cualquier punto de vista que utiliza DisplayFor (m => m. propiedad), muestra un error como: El elemento del modelo pasado al diccionario es del tipo 'System.DateTime', pero este diccionario requiere un elemento de modelo de tipo 'System.String'. o: El elemento de modelo pasado al diccionario es del tipo 'System.Int64', pero este diccionario requiere un elemento de modelo de tipo 'System.String'.
Sé que puedo resolver esto agregando una plantilla de visualización para cada tipo utilizado, pero supongo que también es posible utilizar la plantilla "predeterminada" para todos los tipos donde no se define la plantilla personalizada.
ACTUALIZACIÓN Después de la respuesta de Darin, he comprobado Brad tutorial y de cambio de plantilla en:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new { @readonly = "readonly" })
Esto se basa en la plantilla "por defecto" y funciona para todos los tipos.
¿Puede decirme en qué parte del código fuente de mvc viven los archivos Object o Collection.cshtml? – Maslow
@Maslow: no hay realmente archivos cshtml en el código fuente, html se genera con la ayuda de TagBuilder (por ejemplo, consulte http://aspnetwebstack.codeplex.com/SourceControl/changeset/view/8b17c2c49f88#src/System.Web .Mvc/Html/InputExtensions.cs) –