Как создать вывод HTML без а) привязки данных или б) с помощью Response.Write? - PullRequest
0 голосов
/ 02 января 2009

Вид, связанный с моим другим вопросом - я когда-либо использовал HTMLControls только с runat = "server" и WebControls, неохотно, предпочитая иметь контроль над созданной разметкой (включая идентификаторы элементы и т. д.).

Что вы предлагаете, скажем, для перебора содержимого коллекции и генерации таблицы или списка, не прибегая к привязке данных или не используя Response.Write в цикле из кода кода? Меня интересуют разные подходы к созданию чистого, поддерживаемого кода.

Ответы [ 5 ]

4 голосов
/ 02 января 2009

Ничто не помешает вам перебирать свою коллекцию прямо на странице aspx.

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

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

     <% } %>
 </ul>

В этом примере People - это свойство списка в моем коде. Вы обнаружите, что многие проекты ASP.NET MVC используют этот метод.

1 голос
/ 02 января 2009

Когда вы говорите «привязка данных», говорите ли вы о привязке результирующего набора базы данных к Gridview или Repeater и т. Д. С помощью вызова .Bind () или просто с помощью любого серверного серверного элемента управления ASP.NET (или серверного серверного элемента управления HTML) в общем?

Потому что, если вы просто хотите избежать использования серверных элементов управления в целом, но не хотите использовать Response.Write либо, вы серьезно ограничены в своих возможностях.

Лично, если вы хотите контролировать разметку, почему бы просто не перебрать SqlDataReader или что-то еще, а затем сохранить результаты в элемент управления Literal, используя HTML, где это применимо. Затем на странице (где бы вы ни хотели, чтобы данные появлялись) просто выполните:

 <asp:Literal ID="ltrResults" runat="server" />
0 голосов
/ 03 января 2009

Управление повторителем используется именно для того, что вы хотите. Это серверный элемент управления, но вы указываете, какой HTML генерируется в шаблонах. Вы делаете привязку данных, но разве это не просто ярлык для ручного цикла?

0 голосов
/ 03 января 2009

Вдохновленный первым предложением, я также попытался добавить PlaceHolder в aspx, а затем добавить в него дочерние элементы управления программно из кода. Я надеюсь, что смогу создать пользовательский элемент управления для повторяющегося содержимого, а затем добавить его в PlaceHolder в цикле. Это позволит красиво инкапсулировать код пользовательского интерфейса и будет скрывать все действия StringBuilder.

0 голосов
/ 02 января 2009

@ Домовой ... да, но это операторы Response.Write ... вы просто используете сокращенный формат

...