【问题标题】:orchard cms: how to add media picker field to a custom partorchard cms:如何将媒体选择器字段添加到自定义部件
【发布时间】:2012-09-12 11:58:42
【问题描述】:

我的问题类似于questions/10369967/orchard-cms-how-to-add-media-picker-field-to-anew-module

我创建了一个新的内容部分,它有一个选择列表、一个文本框和......我想包含一个媒体选择器文件。

根据 Bertrand Le Roy 的建议,我已将此添加到内容部分:

ContentDefinitionManager.AlterPartDefinition("Product",
    builder => builder.WithField("ProductImage",
        fieldBuilder => fieldBuilder
            .OfType("MediaPickerField")
            .WithDisplayName("Product Image")));

但是我不知道如何在我的自定义编辑器视图中显示它

我确信应该有像 @Display(Model.ProductImage) 这样简单的东西......但我已经按照 Orchard 文档中的 writing a content part 进行了操作,并且我的编辑器视图中的模型不是动态的。

如果存在@Display(Model.ProductImage) 这样的魔法,我该如何将媒体选择器项添加到我的视图模型中?

更新

媒体选择器字段似乎显示在我添加此部分的内容类型上,而不是我想要的位置!我想显示/隐藏此字段偏向于从选择列表中选择的值,如何停止字段内容项的默认呈现并在我的自定义视图中呈现它?

更新 2

我已经在模型中添加了这个

 public MediaPickerField MediaPicker
        {
            get{ return (MediaPickerField)((dynamic)ContentItem).HeaderPart.Image;}

        }

这个到视图

@Html.Partial("EditorTemplates/Fields/MediaPicker.Edit", Model.MediaPicker)

这是placement.info

 <!-- MediaPicker -->
    <Place Fields_MediaPicker_Edit="-"/>

现在它在通过 cms 端编辑时看起来正确...但似乎没有将图像保存到数据库中!

【问题讨论】:

  • 现在你已经移动了球门柱;)看起来你想要做的与你原来的问题建议的有很大的不同。您似乎正在尝试在非常自定义的情况下重新使用媒体选择器字段。换句话说,重用它的 UI 而不是真正的字段本身。 TinyMCE 的媒体选择器扩展可能是您自定义部件代码的更好起点。
  • 我认为这是在研究过程中添加定义! ...但我明白你的意思。我在想一定有一个模块可以在某个地方执行此操作,但想不出是哪个模块。谢谢,我会看看 TinyMCE

标签: orchardcms


【解决方案1】:

应该类似于@Model.ContentItem.Product.ProductImage.Url

【讨论】:

  • 使用这个 ((dynamic)Model.ContentItem).Product.ProductImage 我得到 Orchard.Fields.Fields.MediaPickerField,但如果我添加 Url 属性,它什么也没有,它是我想要构建的形状和渲染。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 2013-11-06
  • 1970-01-01
  • 2010-11-06
  • 2018-06-27
  • 1970-01-01
相关资源
最近更新 更多