Главная страница статей --> Советы по фотошопу, графике и хитрости в построении php кода

Использование шаблонов дизайна в ASP.NET

Источник: realcoding.net

[2 страница]
Теперь подготовим три шаблона - для отображения обычного содержимого, версии для печати и для экспорта в Excel. Первый шаблон тривиален:

<HTML>
<
HEAD>
  <
TITLE></TITLE>
</
HEAD>
<
BODY>
  <
TABLE ID=Table1 CELLSPACING=0 CELLPADDING=0 WIDTH=100% BORDER=0>
    <
TR>
      <
TD WIDTH=203>Report #{{NUMBER}}</TD>
      
<TD COLSPAN=2>
        <
P align=right>Type #{{TYPE}}</P>
      
</TD>
    </
TR>
    <
TR>
      <
TD>Periode</TD>
      <
TD>{{DAT_START}}</TD>
      <
TD>{{DAT_END}}</TD>
    </
TR>
    <
TR><TD COLSPAN=3><HR></TD></TR>
    <
TR><TD COLSPAN=3>{{TEXT}}</TD></TR>
    <
TR><TD COLSPAN=3><HR></TD></TR>
    <
TR>
      <
TD COLSPAN=2></TD>
      <
TD>Verify {{MANAGER}}</TD>
    </
TR>
  </
TABLE>
</
BODY>
</
HTML>

Второй шаблон (версия для печати) отличается от первого незначительно, приводить его не будем (вы можете посмотреть его в материалах к статье).

Третий файл (версия для экспорта в Excel) представляет определенный интерес. Начиная с Office 2000, Microsoft ввела в Excel очень интересный формат - Excel XML. Он интересен тем, что это простой XML файл с определенной разметкой, следовательно, с нашей точки зрения это просто очередное представление дизайна. Вообще, чтобы подготовить шаблон для этого файла, нужно разобраться в структуре Excel XML, но, как истинно ленивые программисты пойдем более легким (и оптимальным путем) :). Откроем Excel и просто наберем в нем нужно вида текст. После этого выберем в меню File команду Save As и укажем при сохранении файла, что сохранять его нужно как Excel XML. Вот и все - шаблон готов.

Далее напишем страницу, которая будет открывать и обрабатывать эти шаблоны:

///
/// Страница, над которой мы будем ставить эксперименты
/// на вход принимаем номер шаблона (?Template=):
/// 1 - обычный
/// 2 - версия для печати
/// 3 - Excel версия (для открытия требует Excel 2000 или XP)
///
public class Default : System.Web.UI.Page
{
 
///
  /// Не Page_Load - зачем нам эти лишнии инициализации, все равно не используем.
  /// Здесь вообще спорный вопрос, стоит ли от System.Web.UI.Page наследоваться
  ///
  ///
 
override protected void OnInit(EventArgs e)
  {
   
string UseTemplateNumber = 1;

   
// Считываем номер файла темплейтов, который нам нужно открыть, на всякий случай проверив
   
if ( Request.QueryString[Template] != null)
    {
      
UseTemplateNumber = Request.QueryString[Template].ToString();
       
      if (
UseTemplateNumber != 1 && UseTemplateNumber != 2 && UseTemplateNumber != 3)
       
UseTemplateNumber = 1;
    }

   
Trace.Warn(Начали работать с темплейтами);

   
// Открываем наш парсер и скармливаем ему файл, содержащий шаблон дизайна
   
Parser _Parser = new Parser();

   
_Parser.OpenTemplate( String.Format( {0}Templates/default_{1}.htm,
                
AppDomain.CurrentDomain.BaseDirectory, UseTemplateNumber ) );


   
// Задаем значения переменных
   
_Parser.SetVariable(NUMBER, 2347687 );
   
_Parser.SetVariable(TYPE, 234-234-DD-9 );
   
_Parser.SetVariable(DAT_START, 2003/01/01 );
   
_Parser.SetVariable(DAT_END, 2003/03/03 );
   
_Parser.SetVariable(TEXT, Что-нибудь умное, с графиками, диаграммами, без ошибок );
   
_Parser.SetVariable(MANAGER, Такой Т.О. );


   
// Если мы хотим, чтобы файл был открыт сразу Excel-ем, подкрректируем заголовоки
   
if ( UseTemplateNumber == 3 )
    {
      
Response.ContentType = application/vnd.ms-excel;
      
Response.AddHeader( Content-Disposition, attachment; filename=Template_3.xls );
    }

   
// И выводим в ответ на запрос
   
Response.Write( _Parser.ParseToString() );

   
Trace.Warn(Закончили работать с темплейтами);
  }
}

Посмотрим, насколько эффективно это работает - включим трасерт и засечем время работы написанного обработчика - 0.0004 сек - хороший результат. Конечно, при использовании объемных файлов шаблонов, заполнении их информаций из БД, использовании более сложных обработчиков шаблонов время парсинга возрастет, но, как показывает опыт работы с реальными проектами, эти накладные расходы на обработку файлов шаблонов пренебрежительно малы.

Выводы


Технология шаблонов дизайна совсем не излишняя в ASP .NET, ее можно и нужно применять. Причем наиболее эффективно ее применение не вместо механизмов, предлагаемых ASP .NET, а совместно с ними, дополняя их и облегчая решение рутинных задач.

Контакты
Редакция:
[0.001]