Это вы называете изящно? Я уже давно работаю с php и прекрасно знаю все отрицательные стороны синтаксиса. <?= не спасает, на сложных конструкциях начинаются пляски. Далее, я(как и многие другие проекты, включая Magento) всегда придерживаюсь Zend Coding Standards. Где четко указано
PHP code must always be delimited by the full-form, standard PHP tags:
наверное, NHaml им бы не удалось расширить так, как они захотят. например добавить декларативные хелперы всякие и прочие плюшки. А тут свое — крути-верти как хочешь.
О, потехоньку осваиваю asp.net, и буквально первое что мя в стандартном view-engine'е смутило- это не понятки как писать код, а-ля ProductListing.
В результате обычный C#'овский метод-хелпер сделал, но извините — в ручную склеивать строки разметки и серверного кода — это маразм…
Ну, тут тоже как бы с собачки нужно начинать те части, где вставляется значение переменной :). Я, на самом деле, скорее имел ввиду реализацию — что оно просто реализует поддержку XML. Но, посмотрев на примеры, беру свои слова обратно — здесь, похоже, они действительно сделали настоящий парсер C# после собачки :)
Очень интересно… когда всё это можно ожидать, чтобы «пощупать»?
Сразу маленький вопросик про конфликты с «собакой»
допустим надо сделать такое:
Адрес для контактов: info@Model.ActiveDomainForEmail
как такое отработает? т.е. Model.ActiveDomainForEmail — допустим содержит "@mydomain.ru" и надо чтобы в результирующем html было info@mydomain.ru
не подумает ли парсер, что info@Model.ActiveDomainForEmail это валидный email?
Предположительно, пощупаем мы в ближайшее 2 недели.
Нет парсер все правильно найдет, у вас же есть свойства в модели. Парсер не смотрит внутрь значений, он смотрит является ли, то что вы написали справа от @ C#-кодом
при этом somefield — это доступная переменная, ссылка на объект, а в нем строковое поле ru, содержащее строку "@mydomain.ru"
понятно что пример синтетический, просто хочется понять, не будет ли вдруг такая «умная» краткая запись причиной путаницы
Нет, потому что парсер не проверяет валидность доменных имен, он ищет c# код. Я не могу ручаться на 100%, но иначе быть не может, там парни не дураки писали :)
а тогда одна опечатка и info@Model.ActiveDomainForEmail так и впечатается в форму
и не понятно как с ошибками компиляции, ведь пишет что не надо закрывать выражение потому что парсер поймет где оно кончилось… значит опять же буквой ошибся и досвидание
парсер понимает большинство ситуаций, но когда вы не доверяете ему, то можете экранировать @ с помощью двойного написания @@, в статье про это кстати написано
Я про обратную ситуацию. Экранировать — это понятно, когда я хочу получить собаку в результирующий html, а я пишу про то, что мне кажется не будет понято парсером как C# код, хотя это он и есть
Есть ощущение, что этот синтаксис эквивалентен aspx с точностью до подстановочных знаков: т.е. автоматизированным способом razor-синтаксис конвертится в классическую aspx-разметку, а дальше по накатанной.
Имхо минус «скобка-процент» не заслуживает того, чтобы ему присвоили отдельное название. Но может, я что-то не понимаю?
Я так понимаю товарищи взяли и реализовали то что уже давно было в PHP, Java и прочих ориентированных на веб языках — MVC то появился недавно в .NET а тут банальный JSTL выдают за чудо технологию
Razor — новый движок представлений в ASP.NET