Pregunta

Creé un ayudante html

Html.BreadCrumb(IDictionary<string, string> crumbs)

Donde la primera cadena es la etiqueta y la segunda cadena es la URL. El asistente crea el html requerido (una lista desordenada, algunas clases para el primer elemento, elemento actual, último elemento, elemento muerto y separadores, etc.) Todo funciona bien, pero lo hago creando un stringbuilder, bombeando todo el html y devolviendo el contenido del stringbuilder como una cadena.

Supongo que en este ejemplo no importa tanto, pero ¿qué pasa si un ayudante Html está produciendo una gran carga de html? ¿No hay una manera de llevarlo a Response.Write en lugar de un stringbuilder?

¿O cualquier otro problema / mejora que tenga?

¿Fue útil?

Solución

Ciertamente es posible usar Response.Write en lugar de devolver una cadena; vea la fuente de System.Web.Mvc.Ajax.Form (en AjaxExtensions.cs) en la fuente de MVC para ver un ejemplo.

Luego llama al ayudante con <% en lugar de <% =.

¿Será más rápido? Lo dudo, pero es fácil de probar.

Otros consejos

Por cierto, tenemos un patrón de nombres en ASP.NET MVC para las diversas técnicas de representación.

Los ayudantes que devuelven una cadena de lo que son deben llamarse como son. Por ejemplo, Url.Action () y Html.TextBox () devuelven esos elementos exactos. Por lo tanto, estos ayudantes deben usarse con & Lt;% =% & Gt; sintaxis.

Los ayudantes que procesan directamente en la secuencia de salida deben comenzar con Render. Por ejemplo, Html.RenderPartial (). Estos se usan con & Lt;%% & Gt; sintaxis.

Los ayudantes que usan el patrón IDisposable deben nombrarse con Begin / End. Por ejemplo, Html.BeginForm () y Html.EndForm (). Estos también deben usarse con & Lt;%% & Gt; sintaxis.

Gracias Eilon

No creo que tenga ningún problema de rendimiento siempre que el tamaño de las páginas HTML que produzca sea razonable. Y cuando realmente empiezas a crear páginas de megabytes de tamaño, entonces debes preguntarte, ¿por qué estás creando archivos HTML tan grandes?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top