自定义区域内的食人鱼CMS HtmlRegion不保存内容

时间:2014-09-09 07:48:06

标签: asp.net-mvc-5 piranha-cms

我在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();
    }
}
}

我在区域/经理/观看/扩展中的经理模板

@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 个答案:

答案 0 :(得分:1)

问题可能是您的HtmlValue在Model Binder中失效,因此Model.IsValid为false。解决您问题的最简单方法是将您的财产更改为:

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()以确保身体不会被转义。

此致

/Håkan