Создание фигур с помощью ShapeHelper в Orchard CMS — тип не найден

Я создаю сайт с помощью Orchard CMS и создаю свои собственные модули. Я следил за парой руководств и пока что все хорошо.

Я не понимаю, как работает метод .ShapeHelper(), и это вызывает у меня небольшие затруднения.

Следующий код из моего файла драйвера отлично работает и генерирует мое представление во внешнем интерфейсе.

protected override DriverResult Display(SubscribersFormPart part, string displayType, dynamic shapeHelper)
        {    
            // setup model
            part.DateStamp = System.DateTime.Now;
            return ContentShape("Parts_SubscribersForm", () => shapeHelper.DisplayTemplate(TemplateName: "Parts/SubscribersForm", Model: part, Prefix: Prefix));
        }

Тем не менее, я видел в других учебниках, что вместо DisplayTemplate вместо этого используется имя части/представления. изображение ниже..), а не более узнаваемое имя

введите здесь описание изображения

Я попытался просто изменить свой метод на:

protected override DriverResult Display(SubscribersFormPart part, string displayType, dynamic shapeHelper)
        {    
            // setup model
            part.DateStamp = System.DateTime.Now;
            return ContentShape("Parts_SubscribersForm", () => shapeHelper.Parts_SubscribersForm(TemplateName: "Parts/SubscribersForm", Model: part, Prefix: Prefix));
        }
  • обратите внимание на "Parts_SubscribersForm()" - хотя, когда я это делаю, я получаю следующую ошибку...

введите здесь описание изображения

Я считаю, что это связано с тем, где находятся мои представления, хотя я также считаю, что они находятся в правильных папках, которые требуются Orchard. Это моя структура папок, где мои взгляды касаются...

введите здесь описание изображения

Может ли кто-нибудь указать мне правильное направление - где я могу использовать имя своей части в методе shapeHelper, а не «DisplayContent»?


person Darren Wainwright    schedule 05.08.2013    source источник


Ответы (1)


Поместите шаблон отображения прямо в папку Views (/Views/Parts.SubscribersForm.cshtml), а не в папку DisplayTemplates. Orchard по соглашению сканирует Views папки только при поиске шаблонов форм. С другой стороны, эта подпапка EditorTemplates содержит шаблоны для редакторов деталей, т.е. эти формы возвращаются из методов драйвера Editor.

Что это за динамичная shapeHelper штука? Короче говоря, это фабрика форм. Когда вы звоните, например. shapeHelper.SomeShape(Foo: 1, Bar: "baz") возвращает объект формы, соответствующий шаблону SomeShape.cshtml, с динамической моделью, содержащей свойства Foo и Bar. Этот шаблон должен находиться где-то в папке Views модуля или темы. Вот, пожалуй, и вся магия.

Если вы хотите лучше понять фигуры, это хорошая отправная точка: http://docs.orchardproject.net/Documentation/Accessing-and-rendering-shapes.

person Piotr Szmyd    schedule 05.08.2013