que getenumerator for examples array c# asp.net-mvc loops

getenumerator - ienumerable c# foreach



foreach o Repeater-¿cuál es mejor? (5)

Estoy construyendo un sitio web en ASP.Net, usando MVC, y necesito enumerar un conjunto de resultados. Ambos trabajos funcionan como yo quiero, pero me pregunto cuál es más rápido, más limpio y / o mejor, o si otra opción sería más apropiada.

Nota: ViewData.Model es de tipo IEnumerable<Thing> y necesito mostrar más atributos que Name - He recortado el código para este ejemplo.

<% foreach (var thing in ViewData.Model) { %> <p><%= thing.Name %></p> <% }; %>

<% rptThings.DataSource = ViewData.Model; rptThings.DataBind(); %> <asp:Repeater ID="rptThings" runat="server"> <ItemTemplate> <p><%# DataBinder.Eval(Container.DataItem, "Name") %></p> </ItemTemplate> </asp:Repeater>


Aquí hay otra opción . No he usado esto yo mismo, pero parece interesante.



foreach es definitivamente más rápido, si no específicamente arruinas algo. Repeater es más limpio, por supuesto, y separa más nítidamente la interfaz de usuario y la lógica. A veces necesitas más condiciones (aparte de las diferentes filas pares e impares) para renderizar tus cosas correctamente, lo que hace que foreach sea ​​la única opción.

Personalmente prefiero Repeater para situaciones normales y foreach para otras más complejas.

EDITAR: Estaba hablando de ASP.NET simple con WebControls. Para MVC e incluso páginas que en su mayoría son generadas por código, estoy de acuerdo en que foreach es más directo y más limpio.


foreach es el camino a seguir para ASP.NET MVC. ¿Por qué? Personalmente, evito los controles heredados asp:xxx ... porque posiblemente podrían tener la exageración que existe con el modelo de formularios web. En segundo lugar, ¿qué pasa con todos los event delegates que tiene que conectar? estás empezando a mezclar y combinar arquitecturas, IMO, por lo que esto podría conducir seriamente a un verdadero código de spagetti con un mantenimiento loco y problemas de soporte. (IMO: DataBinder.Eval == muy malo :( :( :()

El único control asp:xxx uso es el mastpage / content control (porque no hay alternativas).

Por último, hacer foreach en asp.net mvc NO es un código spagetti, como muchas personas creen. Sé que lo hice cuando vi por primera vez la demo inicial de mvc. En todo caso, hace que la interfaz de usuario sea mucho más limpia que antes, mucho más fácil de mantener. IMO, código de spagetti es cuando tienes muchos <% .. %> haciendo lógica de negocios y lógica ui y acceso (dg) db. Recuerda, eso es lo que hicieron los píos en el salvaje oeste de asp.net classic : P

Resumen

Seguir con foreach y evitar el uso de controles de formularios web: es simple, muy eficiente y muy posible de hacer.


<p each="var item in ViewData.Model">${item.Name}</p>

Mmm, sabrosa chispa .