Estoy buscando para crear un editor de plantillas para Object.cshtml para cambiar el comportamiento del método Html.EditorForModel(). No puedo encontrar ningún ejemplo de esto usando Razor. He visto this example usando el motor de visualización MVC2 y WebForm, pero no sé lo suficiente sobre la máquina de afeitar para convertirlo. Incluso un simple ejemplo sería muy útil.Creación de un editor de plantillas object.cshtml con MVC y Razor
12
A
Respuesta
21
Sólo voy a hacer la plantilla de visualización y dejar el resto como un ejercicio para el lector :)
@if (Model == null) {
<text>@ViewData.ModelMetadata.NullDisplayText</text>
} else if (ViewData.TemplateInfo.TemplateDepth > 1) {
<text>@ViewData.ModelMetadata.SimpleDisplayText</text>
} else {
<table cellpadding="0" cellspacing="0" border="0">
@foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForDisplay && !ViewData.TemplateInfo.Visited(pm))) {
if (prop.HideSurroundingHtml) {
<text>@Html.Display(prop.PropertyName)</text>
} else {
<tr>
<td>
<div class="display-label" style="text-align: right;">
@prop.GetDisplayName()
</div>
</td>
<td>
<div class="display-field">
@Html.Display(prop.PropertyName)
</div>
</td>
</tr>
}
}
</table>
}
0
Esto parece funcionar para Editor de plantillas de de arranque, por favor hágamelo saber de cualquier mejora
Object.cshtml
@if (Model == null)
{
<text>@ViewData.ModelMetadata.NullDisplayText</text>
}
else if (ViewData.TemplateInfo.TemplateDepth > 1)
{
<text>@ViewData.ModelMetadata.SimpleDisplayText</text>
}
else
{
foreach (var prop in ViewData.ModelMetadata.Properties.Where(pm => pm.ShowForDisplay && !ViewData.TemplateInfo.Visited(pm)))
{
if (prop.HideSurroundingHtml)
{
<text>@Html.Editor(prop.PropertyName)</text>
}
else
{
<div class="form-group">
@Html.Label(prop.PropertyName, new { @class = "control-label col-md-2", @style = "text-align:right;" })
<div class="col-md-10">
@Html.Editor(prop.PropertyName, null, new { @class = "form-control " })
@Html.ValidationMessage(prop.PropertyName, "", new { @class = "text-danger" })
</div>
</div>
}
}
}
Cuestiones relacionadas
- 1. ¿Dónde puedo encontrar la plantilla predeterminada Editor de Object.cshtml?
- 2. ASP.NET MVC 3 Razor plantillas VS renderPartial
- 3. ASP.NET Razor como WYSIWYG Browser Editor
- 4. Plantillas anidadas con KnockoutJS y MVC 3.0
- 5. ¿Diferencia entre MVC 3 Partial Page (Razor) y MVC 3 View Page with Layout (Razor)?
- 6. Configuración de MVC 4 (Razor) con MonoDevelop
- 7. Problemas de MVC HtmlHelpers con Razor
- 8. ASP.NET MVC 2 Plantillas de editor personalizadas para dividir campos de fecha y hora
- 9. Registro correcto de JavaScript y CSS en MVC 2 Plantillas de editor
- 10. ASP.NET MVC redactor plantillas/UIHint con parámetros
- 11. MVC 3 con las mejores prácticas de Razor
- 12. Microsoft Charting, MVC 3 y Razor
- 13. Plantillas de ASP.NET MVC para clientes y servidores
- 14. MVC Razor Botón de radio
- 15. Asp.net MVC Site.master y Razor Switch
- 16. DotNetOpenAuth Demo simple, MVC y Razor
- 17. Plantillas de editor para programación defensiva
- 18. MVC Razor String Concat
- 19. MVC ASP.NET o Razor
- 20. ASHX handler con ASP.NET MVC 3 y Razor
- 21. ASP.NET MVC Razor concatenación
- 22. El editor Razor se bloquea VS2010
- 23. Creación de html legible con plantillas de django
- 24. Controles personalizados con ASP.NET MVC Razor
- 25. ASP.NET MVC Razor diseñador
- 26. Editores compatibles con Asp.NET MVC Razor
- 27. ¿Se puede pasar un modelo a través de varias plantillas de editor?
- 28. Creación de instancias de plantillas en C++
- 29. Crear pasos de asistente en MVC y Razor
- 30. ¿Existe un lenguaje de plantillas similar a Razor para aplicaciones web de Java Spring?
Gracias por esto, pero cuando me pega este código en mi object.cshtml me sale "CS1024 de error: preprocesador grave ctive esperado " – Craig
Doh, su código es correcto. Accidentalmente tuve # Html.EditorForModel() en lugar de @ Html.EditorForModel(). Al menos, su código no se desperdicia y muchos nuevos usuarios de Razor lo verán por primera vez en el futuro. – Craig
Ni siquiera puedo ejecutar Object.cshtml. Lo puse en Views/Shared/EditorTemplates/Object.cshtml ¿Alguna idea? –