tutorial que net mvc espaƱol code asp asp.net-mvc asp.net-mvc-3 razor asp.net-mvc-templates

asp.net-mvc - que - razor insert c# code



Plantillas ASP.NET MVC 3 Razor VS RenderPartial (2)

Bueno, deberías preguntar al autor de esa publicación sobre su motivación para presentar esta técnica.

Ciertamente ilustra lo que es posible en Razor. Si deberías usarlo es una cuestión diferente. Personalmente, creo que hay técnicas alternativas que son menos complicadas (estoy de acuerdo con sus puntos sobre el almacenamiento de un Func dentro del contexto de solicitud).

  • Hay @RenderPartial que ya has mencionado.
  • También puede usar la sintaxis de @helper (ya sea como ayudante local o como ayudante global)
  • Puede escribir un helper html (y usar TagBuilder para ensamblar el resultado)
  • Puedes escribir una acción infantil
  • Puedes escribir un ayudante con plantilla

Ahora que veo la lista anterior, creo que MVC podría proporcionar demasiadas opciones :)

Actualización Para ilustrar mejor cómo las plantillas en línea pueden ser útiles, escribí una publicación en el blog sobre su uso para llamar a las secciones con código predeterminado: Secciones de rasurado opcionales con contenido predeterminado .

Puedes usarlo para escribir algo como esto:

@this.RenderSection("OptionalSection", @<div>Default Content</div>)

Acabo de leer esta publicación de blog sobre Razor Templating en ASP.NET MVC 3.

En pocas palabras, ¡ simplemente no lo entiendo!

Es decir, no veo por qué necesitamos este código (bastante) complicado para lograr lo que se puede hacer OMI más fácil (y más @RenderPartial ) con @RenderPartial ?

Esto es lo que no me gusta:

  1. La plantilla se almacena como un delegado Func<T,HelperResult> ?
  2. Ese delegado de plantilla se conserva en Controller ViewData (por ejemplo, HttpContext.Current.Items)

El único "beneficio" que leí de ese blog es que no se requiere un archivo separado para la creación de plantillas, lo que significa que no necesita volver a compilar, etc.

Pero no veo eso como un argumento válido. Los archivos extra están bien siempre y cuando la organización de la solución no se vea comprometida.

Prefiero usar @RenderPartial , ya que puedo mantener mi marcado separado de la vista maestra, y puedo representar esto tanto en línea (tiempo de renderizado) como con jQuery (por ejemplo, evento AJAX).

Tal vez me falta algo aquí, pero ¿alguien puede dar algunas razones por las que deberíamos elegir Razor Templating sobre RenderPartial para crear contenido reutilizable?


Un concepto erróneo común sobre Razor es que no se puede usar fuera del contexto del marco ASP.Net MVC. Es el escenario más común, sin embargo, el poder del motor de afeitar va más allá de eso.

Puede definir plantillas de afeitar en una aplicación de consola o incluso en una biblioteca. Como ejemplo simplificado, considere una aplicación que envía correos electrónicos automáticos HTML a los clientes. En los viejos tiempos, o bien recurrías a la concatenación de cadenas o a la transformación XSLT o algo más. De cualquier manera, no puede ver visualmente su marcado y la manipulación se convierte en una pesadilla de mantenimiento.

Con las plantillas Razor, puede definir su plantilla como marcado HTML donde puede visualizarlo y probarlo fácilmente.

Aquí hay un excelente artículo que demuestra esta capacidad: http://www.west-wind.com/weblog/posts/2010/Dec/27/Hosting-the-Razor-Engine-for-Templating-in-NonWeb-Applications

Nota: No estoy diciendo que el enlace que usted indicó muestre esto, solo un ejemplo de por qué desea ir más allá de los métodos enumerados en la respuesta de @marcode.