自定义区域中的 Piranha CMS 图像扩展
Posted
技术标签:
【中文标题】自定义区域中的 Piranha CMS 图像扩展【英文标题】:Piranha CMS Image Extenion in Custom Region 【发布时间】:2013-09-26 05:49:49 【问题描述】:我创建了一个自定义区域,现在我想向它添加一个图像。
如何在这个自定义区域中实现图像选择器?
我看到了一个示例 here,它向您展示了如何对核心扩展执行此操作,但我似乎无法让它与自定义区域一起使用。
public class AccordionItem
public string Title get; set;
public string Body get; set;
[Export(typeof(IExtension))]
[ExportMetadata("InternalId", "AccordionRegions")]
[ExportMetadata("Name", "Accordion")]
[ExportMetadata("ResourceType", typeof(Piranha.Resources.Extensions))]
[ExportMetadata("Type", ExtensionType.Region)]
[Serializable]
public class AccordionRegion : Extension
[Display(Name = "Title")]
public string Title get; set;
public IList<AccordionItem> Items get; set;
public AccordionRegion()
Items = new List<AccordionItem>();
【问题讨论】:
【参考方案1】:我查看了您的代码并找到了一个关于如何将图像合并到您的 SlideItem 中的非常简单的解决方案。但首先是另一件事。
[ExportMetadata("ResourceType", typeof(Piranha.Resources.Extensions))]
此元数据字段仅在您想要获取在 Name 元字段中输入的键以启用基于文化的不同语言时才有效。由于核心中不存在 Accordion 键,因此它搞砸了,至少对我来说是这样。
现在到图像上。为了让它工作,我只是将您的滑块项目修改为以下内容:
public class AccordionItem
public string Title get; set;
public string Body get; set;
public ImageRegion Image get ; set ;
public AccordionItem()
Image = new ImageRegion() ;
这样我们可以重用核心项目中可用的 ImageRegion 的标准功能。由于您没有为您的视图提供源代码,因此我将它们模拟成这样。
AccordionRegion.cshtml
@model AccordionRegion
<ul class="form">
<li>@html.LabelFor(m => m.Title)
<div class="input">@Html.TextBoxFor(m => m.Title)</div>
</li>
</ul>
@Html.EditorFor(m => m.Items)
EditorTemplates/AccordionItem.cshtml
@model AccordionItem
<fieldset>
<legend>An item</legend>
<ul class="form">
<li>@Html.LabelFor(m => m.Title)
<div class="input">@Html.TextBoxFor(m => m.Title)</div>
</li>
<li>@Html.LabelFor(m => m.Body)
<div class="input">@Html.TextAreaFor(m => m.Body)</div>
</li>
</ul>
@Html.PartialFor("ImageRegion", m => m.Image)
</fieldset>
由于 ImageRegion 呈现大量 HTML,我将实现某种服务器端代码,该代码生成一个新的 AccordionItem 并使用 AJAX 将其发送回客户端,而不是在视图中硬编码大量 HTML/JS 内容。
【讨论】:
以上是关于自定义区域中的 Piranha CMS 图像扩展的主要内容,如果未能解决你的问题,请参考以下文章