2013-08-05 30 views
2

我建立使用果園CMS一個網站,並創建自己的自定義模塊。我一直在關注幾個教程,並且非常好。與ShapeHelper在果園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部分/視圖名稱使用instead..which其他教程是什麼,我寧願作爲特別使用形狀時,跟蹤模塊,它變得有點混亂看到「DisplayTemplate」(如下面的圖片。),而不是更容易識別的名字

enter image description here

我試圖簡單地改變我的方法:

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()」 - 儘管當我這樣做,我得到以下錯誤...

enter image description here

我相信這是在我的視圖位於辦,儘管我也相信我有這些在Orchard需要的正確文件夾中。這是我的文件夾結構,其中我的觀點而言......

enter image description here

任何人都可以點我在正確的方向 - 在那裏我可以在shapeHelper方法用我的部件名稱,而不是「DisplayContent」?

回答

7

直接把你的顯示模板Views文件夾(/Views/Parts.SubscribersForm.cshtml),內部沒有DisplayTemplates內。按照慣例,果園只在尋找形狀模板時才掃描Views文件夾。另一方面,EditorTemplates子文件夾包含部件編輯器的模板,即。從驅動程序Editor方法返回的那些形狀。

那是什麼動態shapeHelper的事?總之 - 這是一個形狀工廠。當你打電話給例如。 shapeHelper.SomeShape(Foo: 1, Bar: "baz"),它返回對應於SomeShape.cshtml模板的形狀物體,用含有性能FooBar的動態模型。該模板必須位於模塊或主題的Views文件夾中的某處。這或多或少都是魔法。

如果您想了解更多的形狀 - 這是一個很好的起點:http://docs.orchardproject.net/Documentation/Accessing-and-rendering-shapes