从 Orchard CMS 的仪表板添加数据记录
Adding data to record from the dashboard in Orchard CMS
你能给我指出正确的方法吗?文档写得不好,按照官方文档创建内容字段、部分和类型对我完成 objective.
完全没有帮助
我想要做的就是创建一个包含两个 properties/fields 的记录:Datetime Start 和 Datetime End。
我想从后台输入,保存到数据库
到目前为止,唯一能正常工作的是 Migrations.cs 中编写的用于在数据库上创建 table 的代码,称为 CycleRecord。
如何修改?
创建零件并存储其数据需要 5 个步骤:
1:创建代表 table
中的行的记录
public class CyclePartRecord : ContentPartRecord
{
public DateTime Start { get; set; }
public DateTime End { get; set; }
}
2:创建代表Orchard中part的part
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:创建创建 table 及其列
的迁移
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!要显示编辑器 and/or 部分,它需要在此文件中
<Placement>
<Place Parts_Cycle="Content:10"/>
<Place Parts_Cycle_Edit="Content:7.5"/>
</Placement>
因为我有太多时间,所以我为你写了整篇文章,但你也可以看看这个(写得很好;))教程:
http://docs.orchardproject.net/Documentation/Writing-a-content-part
你能给我指出正确的方法吗?文档写得不好,按照官方文档创建内容字段、部分和类型对我完成 objective.
完全没有帮助我想要做的就是创建一个包含两个 properties/fields 的记录:Datetime Start 和 Datetime End。
我想从后台输入,保存到数据库
到目前为止,唯一能正常工作的是 Migrations.cs 中编写的用于在数据库上创建 table 的代码,称为 CycleRecord。
如何修改?
创建零件并存储其数据需要 5 个步骤:
1:创建代表 table
中的行的记录public class CyclePartRecord : ContentPartRecord
{
public DateTime Start { get; set; }
public DateTime End { get; set; }
}
2:创建代表Orchard中part的part
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:创建创建 table 及其列
的迁移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!要显示编辑器 and/or 部分,它需要在此文件中
<Placement>
<Place Parts_Cycle="Content:10"/>
<Place Parts_Cycle_Edit="Content:7.5"/>
</Placement>
因为我有太多时间,所以我为你写了整篇文章,但你也可以看看这个(写得很好;))教程:
http://docs.orchardproject.net/Documentation/Writing-a-content-part