gpt4 book ai didi

asp.net-mvc - 在 Orchard CMS 中使用 ShapeHelper 生成形状 - 找不到类型

转载 作者:行者123 更新时间:2023-12-01 13:53:23 25 4
gpt4 key购买 nike

我正在使用 Orchard CMS 构建网站并创建我自己的自定义模块。我一直在学习一些教程,目前为止还不错。

我不明白 .ShapeHelper() 方法是如何工作的,这给我带来了一些麻烦。

以下代码来 self 的驱动程序文件,运行良好并在前端生成我的 View 。

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));
}

但是,我在其他教程中看到,使用零件/ View 的名称而不是 DisplayTemplate 代替..这是我更愿意的,特别是在使用它正在获取的形状跟踪模块时看到“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

我相信这与我的 View 所在的位置有关,但我也相信我在 Orchard 需要的正确文件夹中有这些。这是我的文件夹结构,其中涉及我的观点......

enter image description here

谁能给我指出正确的方向 - 我可以在 shapeHelper 方法中使用我的零件名称,而不是“DisplayContent”?

最佳答案

将显示模板直接放在 Views 文件夹 (/Views/Parts.SubscribersForm.cshtml) 中,而不是放在 DisplayTemplates 中。按照惯例,Orchard 仅在查找形状模板时扫描 Views 文件夹。另一方面,EditorTemplates 子文件夹包含部分编辑器的模板,即。从驱动程序 Editor 方法返回的那些形状。

动态 shapeHelper 是什么东西?简而言之 - 这是一个形状工厂。当你打电话时。 shapeHelper.SomeShape(Foo: 1, Bar: "baz"),它返回一个对应于 SomeShape.cshtml 模板的形状对象,具有包含属性的动态模型 FooBar。该模板必须位于模块或主题的 Views 文件夹中的某个位置。这或多或少就是所有的魔法。

如果您想更多地了解形状 - 这是一个很好的起点:http://docs.orchardproject.net/Documentation/Accessing-and-rendering-shapes .

关于asp.net-mvc - 在 Orchard CMS 中使用 ShapeHelper 生成形状 - 找不到类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18059888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com