自定义区域内的 Piranha CMS HtmlRegion 不保存内容

Posted

技术标签:

【中文标题】自定义区域内的 Piranha CMS HtmlRegion 不保存内容【英文标题】:Piranha CMS HtmlRegion within Custom Region not saving content 【发布时间】:2014-11-02 13:23:23 【问题描述】:

我在我的 Piranha CMS 安装中创建了几个自定义区域,但是当我的自定义区域中有任何类型的文本区域时我遇到了问题。编辑器将显示,您可以输入文本,但它不会保存到数据库。

这是我的课程

using System;
using System.ComponentModel.Composition;
using Piranha.Extend;
using Piranha.Extend.Regions;

namespace MatchtechGroup.Models.Regions

[Export(typeof(IExtension))]
[ExportMetadata("InternalId", "SimpleTab")]
[ExportMetadata("Name", "Simple Tab")]
[ExportMetadata("Type", ExtensionType.Region)]
[Serializable]
public class SimpleTab : Extension, ITab

    public string Title  get; set; 
    public htmlRegion Tab  get; set; 

    public SimpleTab()
    
        Tab = new HtmlRegion();
    


还有我在 Areas/Manager/Views/Extensions 中的 Manager 模板

@model MatchtechGroup.Models.Regions.SimpleTab
@
    Layout = "";

<ul class="form">
    <li>
        @Html.LabelFor(m => m.Title)
        <div class="input">@Html.TextBoxFor(m => m.Title)</div>
    </li>
    <li>
        @Html.TextAreaFor(m => m.Tab, new  @class = "editor", @rows = 10 )
    </li>
</ul>

管理器界面在页面编辑器中正确呈现我的新区域,但不会保存 Html 区域中的内容。界面中没有显示错误,只是没有出现“此页面已保存”消息栏,或者我无法发布页面。

任何帮助都将不胜感激,感觉就像我缺少一些基本的东西,或者我无法在此自定义区域中嵌套 HTML 区域。

谢谢

【问题讨论】:

【参考方案1】:

问题可能是您的 HtmlValue 在模型绑定器中无效,因此 Model.IsValid 为假。解决您的问题的最简单方法是将您的属性更改为:

public class SimpleTab : ...

  public string Title  get; set; 
  public string Tab  get; set; 

唯一的区别是在 Razor 标记中使用它时。如果您有一个名为 MyTab 的 SimpleTab 类型的区域,则语法将是(例如):

<div>
  <h3>@Model.Regions.MyTab.Title</h3>
  <div class="content">
    @Html.Raw(Model.Regions.MyTab.Tab)
  </div>
</div>

唯一的区别是@Html.Raw() 以确保正文不会被转义。

问候

/哈坎

【讨论】:

以上是关于自定义区域内的 Piranha CMS HtmlRegion 不保存内容的主要内容,如果未能解决你的问题,请参考以下文章

Piranha CMS - 自定义块不会保存

Piranha CMS 想用新数据扩展用户?

未找到 Piranha CMS 管理自定义控制器

Piranha CMS 自定义实体

Piranha CMS 创建区域扩展

在 Piranha CMS 中访问全球站点区域