Это хорошая идея для написания таблиц с использованием циклов в ASP.net? - PullRequest
0 голосов
/ 15 июля 2011

Я унаследовал веб-приложение ASP.net, где предыдущий разработчик использовал соглашение о наличии ASP.net GridView для каждой таблицы, отображающей данные для пользователя, даже если это не страница, которая будет использовать преимущества подкачки или viewstate в любом случае.

Я немного устал от некоторых ограничений и недоразумений, связанных с GridView, и я думаю о том, чтобы кататься на некоторых страницах.

Мои вопросы: "Это хорошая идея?" «Какие подводные камни?»

Мой код выглядит так:

   <table>
        <%=EquipmentTableHeadingsRowHTML() %>
        <%foreach(Entry entry in TableEntries)
          { %>
            <%=WriteTableRowForEntry(entry) %>
       <% } %>
   </table>

    public string WriteTableRowForEntry(Entry entry)
    {
        StringBuilder sb = new StringBuilder();
        sb.Append("<tr><td>");
        sb.Append(entry.Description);
        sb.Append("</td><td>");
        sb.Append(entry.NumberRequired);
        sb.Append("</td><td>");
        sb.Append(entry.NumberCurrent);
        sb.Append("</td><td>");
        sb.Append(entry.NumberRequired);
        sb.Append("</td><td>");
        sb.Append(entry.CostEach);
        sb.Append("</td><td>");
        sb.Append("TOTAL COST");
        sb.Append("</td></tr>");
        return sb.ToString();
    }

Ответы [ 3 ]

2 голосов
/ 15 июля 2011

Это забавно ... Я просто унаследовал код, написанный сторонними разработчиками, и собирался отправить его обратно, сказав им использовать Repeater или List, но потом я понял, что они используют пару фреймворков Java-скриптов, которыеполагаться на предсказуемые идентификаторы.Более старые версии .NET Framework не дают большой гибкости при указании идентификаторов серверных элементов управления.Сторонний разработчик создал htmlElements в цикле в выделенном коде для компенсации, поэтому у нее была веская причина в этом случае.

Краткий ответ, основанный на этом новом опыте, состоит в том, что генерируются таблицы (или другой повторяемый контент).) в коде позади, на мой взгляд, не очень хорошая вещь.Сложнее читать код, и он лишен цели иметь элементы управления DataBound, поэтому это плохое использование платформы , НО, если есть веская причина, тогда можно сделать исключение.

В этом примере кода я думаю, что это плохо.

2 голосов
/ 15 июля 2011

Нет. Это создает ваш код с презентацией. Как правило, вы не должны иметь свой код позади генерировать HTML.

Повторитель может быть лучшим вариантом для вас.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.repeater.aspx

0 голосов
/ 15 июля 2011

Используйте ListView, и вы получите чистую разметку; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...