Разница между страницей liquid и cshtml в представлениях тем в ядре Orchard

#asp.net-mvc #orchardcms

#asp.net-mvc #orchardcms

Вопрос:

В теме TheAdmin в OrchardCore.Темы, которые я вижу в представлениях папки Layout.cshtml и Layout-Login.cshtml.

В теме TheAgency я вижу макет.жидкость в папке views.

Я попытался изменить свой макет.жидкость в моей папке views в моей недавно созданной теме в Layout.cshtml и когда я запускаю ее, она все еще работает.

Итак, в чем разница между файлами liquid и cshtml в темах в ядре Orchard, и когда я должен использовать один вместо другого?

Ответ №1:

Это два разных механизма просмотра, которые вы можете использовать. Razor / cshtml более знаком для ASP.NET разработчики, но его представления скомпилированы. Liquid — очень известный язык шаблонов в мире JavaScript, и у него есть огромное преимущество для Orchard в том, что его представления не компилируются. Это позволяет сохранять их в базе данных, изменять их без перезапуска или запуска компиляции и т.д.

У вас, как у автора модуля, есть выбор, и вы должны использовать тот, который вам наиболее удобен. Однако иногда, например, если представление должно создаваться динамически по какой-либо причине, Liquid является единственным выбором.

Комментарии:

1. Есть ли способ получить code-completion или intellisense в Visual Studio для шаблонов Liquid? Я вижу, что есть расширение для VS Code, но не могу найти его для VS.

2. Да, похоже, что на marketplace доступны только расширения VS Code.

Ответ №2:

Причина, по которой liquid является единственным вариантом для редактируемых шаблонов контента, заключается в том, что шаблон razor имеет полный доступ ко всему, что вы можете написать в коде C # внутри @{ } блока. В этом случае это ограничено только разрешениями на выполнение, которые предоставляются веб-приложению. Таким образом, из-за этого шаблоны razor могут представлять угрозу безопасности, позволяя конечным пользователям писать шаблоны в razor.

С помощью шаблона liquid вы можете вызывать только фильтры liquid, предоставляемые хостом, который отрисовывает шаблон.