Wednesday, November 17, 2010

Не путайте разметку и код

Архитектура веб-страницы в ASP.NET предполагает разделение разметки и кода, но очень часто это правило нарушается. Например, приветствие выводится так:

txtWelcome.Text = string.Format("Здравствуйте <b>{0}/<b>", userFullName);

Или даже формируется целый блок html-кода внутри cs-файла. Такой подход очень неудобен.
Во-первых, поменять разметку и сообщение становится затруднительным - вполне вероятно придется перекомпилировать проект. Во-вторых, в aspx-разметку (которая может быть сделана либо с помощью css либо просто с помощью html-тегов) вмешивается разметка, приходящая из cs-файла, что может дать совсем не ожиданный результат. В-третьих, даже отладив всю разметку есть вероятность, что однажды возникнет необходимость ее поменять. А вот тут разработчиков и дизайнеров ждет сюрприз - часть разметки зашита в cs-код. Особенно дизайнеры радуются :)

Я рекомендую никогда не смешивать разметку и код. В случае отображения сообщения в aspx‑файле можно хранить полностью метку приветствия:

 Здравствуйте, <b><asp:Label ID="lblWelcom" runat="server" /></b>

А в cs-файле присваивать значение поля lblWelcom.Text.

Либо, если есть такая необходимость, записывать значение метки вместе с указателями параметров и форматированием:

 <asp:Label ID="lblWelcom" runat="server" Text="Здравствуйте, {0}" />

Но тогда при форматировании этой строки использовать ее саму как параметр функции форматирования:
 lblWelcom.Text = string.Format(lblWelcom.Text, "Иван Иванович");

Такой код заменит параметры в метке и отобразит правильное сообщение, но оставит само сообщение в aspx-файле, а код работы с данными в cs-файле.

No comments: