Пользуясь Seaside последние несколько лет, я обнаружил, что системы шаблонов плохо пахнут кодом. Существует ли платформа для .net, использующая что-то похожее на систему Seaside canvas для генерации html, css и javascript? Или способ избежать дублирования, которое я обычно нахожу в шаблонах.
[Изменить]
NHaml не подходит близко к тому, что я ищу. Дело не в сокращении (X) HTML, а в том, что у меня есть язык программирования, на котором я могу рефакторинг и повторное использование кода.
В Seaside это может выглядеть так: (canvas - это конструктор html [и javascript])
renderContentOn: canvas
canvas form
class: 'eventEditor';
with:[
self renderWhoOn: canvas;
renderButtonsOn: canvas]
В этом методе я вызываю две подпрограммы
renderWhoOn: canvas
self decorateDivAndLabel: 'Who' on: canvas around: [
canvas select
id: tagId;
selected: model who;
list: model whoList;
callback: [:value | model who: value]]
Первый вызывает декоратор вокруг элемента формы select:
decorateDivAndLabel: aString on: canvas around: aBlock
canvas div: [
canvas label
for: (tagId := canvas nextId);
with: aString,':'.
aBlock value]
Это позволяет устранить практически все дублирования.