Pregunta

Tipo de relacionado con mi otra pregunta - Solo he usado HTMLControls con runat = " server " y WebControls a regañadientes, prefiriendo tener control sobre el marcado que se genera (incluidos los identificadores de los elementos, etc.).

¿Cuál es su sugerencia para, digamos, iterar sobre el contenido de una colección y generar una tabla o lista sin recurrir a la vinculación de datos o usar Response.Write en un bucle desde el código subyacente? Estoy interesado en los diferentes enfoques para crear código limpio y mantenible.

¿Fue útil?

Solución

Cuando dices " enlace de datos " ¿está hablando de vincular un conjunto de resultados de la base de datos a una vista de cuadrícula o repetidor, etc. a través de una llamada .Bind (), o simplemente usando cualquier control de servidor ASP.NET (o control de servidor HTML) en general?

Porque, si solo desea evitar el uso de los controles del servidor en general, pero no desea utilizar Response.Write tampoco, sus opciones son muy limitadas.

Personalmente, si desea controlar el marcado, ¿por qué no simplemente recorrer un SqlDataReader o algo así y luego guardar los resultados en un control Literal, utilizando HTML cuando corresponda. Luego, dentro de la página (donde quiera que aparezcan los datos) simplemente haga:

 <asp:Literal ID="ltrResults" runat="server" />

Otros consejos

No hay nada que te impida iterar sobre tu colección directamente en tu página aspx.

 <ul>
     <% foreach(Person person in this.People) {%>

         <li><%=person.Firstname %> <%=person.Lastname %></li>

     <% } %>
 </ul>

En este ejemplo, People es una propiedad de lista en mi código subyacente. Encontrará que muchos proyectos ASP.NET MVC están utilizando este método.

@Brownie ... sí, pero esas son declaraciones de Response.Write ... solo estás usando el formato abreviado

Inspirado por la primera sugerencia, también he intentado agregar un PlaceHolder al aspx y luego agregarle controles secundarios programáticamente desde el código subyacente. Espero poder crear un control de usuario para el contenido que se repite y luego agregarlo al PlaceHolder en un bucle. Esto permitirá que el código de la interfaz de usuario esté bien encapsulado y debería ocultar toda la acción de StringBuilder.

El control del repetidor se usa exactamente para lo que desea. Es un control de servidor, pero usted especifica qué HTML se genera en las plantillas. ¿Hace un enlace de datos, pero no es solo un atajo para un bucle manual?

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