Создание чистой разметки с помощью Literal и string.Format - PullRequest
2 голосов
/ 02 июня 2010

Для генерации чистой разметки я часто прибегаю к использованию кода, подобного следующему:

<asp:Literal ID="ltItem" runat="server">
<li class="{0}"><a href="{1}">{2}</a></li></asp:Literal>

И в коде позади:

...
lt.Text = string.Format(lt.Text,
    cssClass,
    item.Url,
    Server.HtmlEncode(item.Caption)
);

Некоторые из преимуществ:

  • чистая разметка HTML, без идентификаторов ASP.Net WebForm и т. Д.
  • Дизайнер может вносить незначительные изменения в ASPX без вмешательства разработчика
  • код предварительно скомпилирован (в отличие от использования встроенного кода или операторов привязки данных)

Недостатки:

  • немного загадочно
  • хрупкий - при удалении параметра в разметке строка. Форматирует исключение

Поэтому мой вопрос:

Это обычный способ создания чистой разметки? Есть ли лучшие альтернативы ? Является ли предпочтительным подход синтаксиса привязки данных?

Ответы [ 2 ]

2 голосов
/ 02 июня 2010

Похоже, вы боретесь со своей структурой. Веб-формы ASP.NET были разработаны для автоматического разрешения идентификаторов на стороне клиента и допускают настройку пользовательского интерфейса на основе свойств, которая напоминает формы Windows. Эти функции часто вносят беспорядок в отображаемый HTML, но результат допускается из-за ощутимых преимуществ.

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

Если вы хотите получить полный контроль над визуализированным HTML, рассмотрите ASP.NET MVC . Контроль вывода HTML является одной из заявленных целей. Кроме того, он предназначен для обеспечения разделения интересов.

Если вы открыты для среды, отличной от Microsoft, есть много доступных, в том числе:

  • MonoRail - фреймворк, основанный на Ruby on Rails
  • Maverick.NET - порт .NET платформы Java Maverick
0 голосов
/ 10 августа 2011

Поправьте меня, если я ошибаюсь, но использование MVC не даст вам скомпилированный код, не так ли? Я делаю то же самое при использовании веб-форм, и у меня было несколько проблем с этим.

...