从Orchard CMS中的仪表板添加数据到记录

时间:2015-07-27 21:35:36

标签: c# .net database orchardcms

你能以正确的方式指出我吗?文档编写得很糟糕,按照创建内容字段的官方文档,部分和类型对完成我的目标没有任何帮助。

我想要做的就是创建一个包含两个属性/字段的记录:Datetime Start和Datetime End。

我想从后端输入它,并将其保存到数据库中。

到目前为止,唯一可行的方法是使用Migrations.cs编写的代码,用于在数据库上创建一个名为CycleRecord的表。

如何修改?

1 个答案:

答案 0 :(得分:1)

创建零件并存储其数据需要5个步骤:

1:创建表示表中行的记录

public class CyclePartRecord : ContentPartRecord
{
    public DateTime Start { get; set; }
    public DateTime End { get; set; }
}

2:创建代表Orchard中零件的零件

public class CyclePart : ContentPart<CyclePartRecord> {
    public DateTime Start {
        get { return Record.Start; }
        set { Record.Start = value; }
    }

    public DateTime End {
        get { return Record.End; }
        set { Record.End = value; }
    }
}

3:创建创建表及其列的迁移

public class Migrations : DataMigrationImpl {

    public int Create() {

        SchemaBuilder.CreateTable(typeof(CyclePartRecord).Name, table => table
            // Unique identifier etc.
            .ContentPartRecord()

            .Column<DateTime>("Start")
            .Column<DateTime>("End"));

        return 1;
    }
}

4:创建处理程序以启用记录存储

public class CyclePartHandler : ContentHandler {
    public CyclePartHandler(IRepository<CyclePartRecord> repository) {
        // Enable storing the cyclepartrecord data
        Filters.Add(StorageFilter.For(repository));
    }
}

5:创建驱动程序以启用显示和编辑器的渲染

public class CyclePartDriver : ContentPartDriver<CyclePart> {
    protected override DriverResult Display(CyclePart part, string displayType, dynamic shapeHelper) {
        return ContentShape("Parts_Cycle", () => shapeHelper.Parts_Cycle(Model: part));
    }

    //GET
    protected override DriverResult Editor(CyclePart part, dynamic shapeHelper) {
        return ContentShape("Parts_Cycle_Edit",
            () => shapeHelper.EditorTemplate(
                TemplateName: "Parts/Cycle",
                Model: part,
                Prefix: Prefix));
    }

    //POST
    protected override DriverResult Editor(CyclePart part, IUpdateModel updater, dynamic shapeHelper) {

        updater.TryUpdateModel(part, Prefix, null, null);
        return Editor(part, shapeHelper);
    }
}

6:创建编辑视图:

@model Maps.Models.MapPart

<fieldset>
    <legend>Cycle Fields</legend>

  <div class="editor-label">
      @Html.LabelFor(model => model.Start)
  </div>
  <div class="editor-field">
      @Html.TextBoxFor(model => model.Start)
      @Html.ValidationMessageFor(model => model.Start)
  </div>

  <div class="editor-label">
      @Html.LabelFor(model => model.End)
  </div>
  <div class="editor-field">
      @Html.TextBoxFor(model => model.End)
      @Html.ValidationMessageFor(model => model.End)
  </div>

</fieldset>

7:创建显示视图

<h1>@T("Start")</h1>
<span>@Model.Start.ToString("dd-MM-yyyy")</span>
<h1>@T("End")</h1>
<span>@Model.End.ToString("dd-MM-yyyy")</span>

8:重要!这一步经常被遗忘。如果你无法弄清楚为什么你的零件没有显示在任何地方,请务必检查你的Placement.info!要显示编辑器和/或部件,它需要在此文件中

<Placement>
    <Place Parts_Cycle="Content:10"/>
    <Place Parts_Cycle_Edit="Content:7.5"/>
</Placement>

由于我有太多时间,我为你写了这整篇文章,但你也可以看看这篇(写得很好;))教程:

http://docs.orchardproject.net/Documentation/Writing-a-content-part