gpt4 book ai didi

orchardcms - 未识别字段的 EditorTemplate 的替代形状

转载 作者:行者123 更新时间:2023-12-03 21:02:14 25 4
gpt4 key购买 nike

当字段具有特定名称 (PublishingMethod) 时,我需要一个枚举器字段的 EditorTemplate 替代品。

基于docs ,我在与原始形状相同的文件夹中创建了一个具有模式 [ShapeType__FieldName] 的 View :

Alternate Template

这是行不通的,仍然使用原来的。我想过在驱动程序中更改编辑器方法,但我认为这违背了替代的目的,正如我从文档中理解的那样,Orchard 会自动检测正确的形状:

The Orchard framework automatically creates many alternates that you can use in your application. However, you can create templates for these alternate shapes.

注意:我无法使用 Shape Tracing 模块,即使安装了全新的 Orchard,它也无法正常工作。

最佳答案

Orchard 中的编辑器与 Display 的工作方式不同。我想这是为了让您获得 MVC 风格的体验。基本上,返回的实际形状是 EditorTemplate 类型,然后绑定(bind)您的模型和前缀,然后使用您给它的模板名称呈现局部 View 。这意味着 alternates 不会按预期或文档状态工作。您的字段名称的替代项实际上已添加到 EditorTemplate 形状中。所以你可以做的是添加一个名为 EditorTemplate-PublishingMethod.cshtml 的 View ,其内容如下:

@{ 
var m = (Orchard.Fields.Fields.EnumerationField)Model.Model;
}

@Html.Partial("PublishingMethodEditor", m, new ViewDataDictionary {
TemplateInfo = new TemplateInfo { HtmlFieldPrefix = Model.Prefix }
})

然后添加另一个名为 PublishingMethodEditor.cshtml 的 View ,其中包含您希望对编辑器进行的覆盖。所有这些 View 都应放在 Views 文件夹的根目录中。

另一种方法是实现IShapeTableProvider 接口(interface)并在特定条件下调整TemplateName 属性,但是,嗯,这需要代码...

编辑 1如果您在其他不想覆盖的内容类型上有该字段名称,则可以使用覆盖 EditorTemplate-ContentTypeName-PublishingMethod.cshtml

关于orchardcms - 未识别字段的 EditorTemplate 的替代形状,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48433469/

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