4
在Orchard中構建我的第一個模塊,除保存(在某些字段上)以外的所有內容都正常工作。在保存時我沒有遇到任何錯誤,這些字段只顯示它們的默認值,沒有在數據庫表中插入/更新值。Orchard自定義模塊不保存所有項目
我首先構建了只有一個屬性的模塊,然後在我確認了管理員更新的事情後,再將其添加到recordpart。現在,新字段顯示在編輯器中,但只有原始屬性(SoldOut)正在保存更新或創建。我看到另一篇文章,建議刪除mappings.bin文件,但這並沒有改變任何東西。謝謝你的幫助!
這裏的主要類型:
public class ConferencePartRecord : ContentPartRecord
{
public virtual bool OnlyShowTeaser { get; set; }
public virtual int TheYear { get; set; }
public virtual DateTime StartDate { get; set; }
public virtual DateTime EndDate { get; set; }
public virtual DateTime EarlyReg { get; set; }
public virtual DateTime RegularReg { get; set; }
public virtual DateTime LateReg { get; set; }
public virtual DateTime ConfirmDate { get; set; }
public virtual bool SoldOut { get; set; }
public virtual bool ConferenceSpace { get; set; }
public virtual int EarlyBirdException { get; set; }
public virtual string NextConf { get; set; }
}
public class ConferencePart : ContentPart<ConferencePartRecord>
{
public bool OnlyShowTeaser
{
get { return Record.OnlyShowTeaser; }
set { Record.OnlyShowTeaser = value; }
}
public int TheYear
{
get { return Record.TheYear; }
set { Record.TheYear = value; }
}
public DateTime StartDate
{
get { return Record.StartDate; }
set { Record.StartDate = value; }
}
public DateTime EndDate
{
get { return Record.EndDate; }
set { Record.EndDate = value; }
}
public DateTime EarlyReg
{
get { return Record.EarlyReg; }
set { Record.EarlyReg = value; }
}
public DateTime RegularReg
{
get { return Record.RegularReg; }
set { Record.RegularReg = value; }
}
public DateTime LateReg
{
get { return Record.LateReg; }
set { Record.LateReg = value; }
}
public DateTime ConfirmDate
{
get { return Record.ConfirmDate; }
set { Record.ConfirmDate = value; }
}
public bool ConferenceSpace
{
get { return Record.ConferenceSpace; }
set { Record.ConferenceSpace = value; }
}
public int EarlyBirdException
{
get { return Record.EarlyBirdException; }
set { Record.EarlyBirdException = value; }
}
public String NextConf
{
get { return Record.NextConf; }
set { Record.NextConf = value; }
}
public bool SoldOut
{
get { return Record.SoldOut; }
set { Record.SoldOut = value; }
}
}
這裏是我的驅動程序類:
public class ConferenceDriver : ContentPartDriver<AeriesConference.Models.ConferencePart>
{
protected override DriverResult Display(ConferencePart part, string displayType, dynamic shapeHelper)
{
return ContentShape("Parts_Conference",() => shapeHelper.Parts_Conference(SoldOut: part.SoldOut));
}
//GET
protected override DriverResult Editor(ConferencePart part, dynamic shapeHelper)
{
return ContentShape("Parts_Conference_Edit",
() => shapeHelper.EditorTemplate(
TemplateName: "Parts/Conference",
Model: part,
Prefix: Prefix));
}
//POST
protected override DriverResult Editor(ConferencePart part, IUpdateModel updater, dynamic shapeHelper)
{
updater.TryUpdateModel(part, Prefix, null, null);
return Editor(part, shapeHelper);
}
}
...的migrations.cs類(所以你可以看到我的更新 - 這都體現在在DB)
public int Create() {
// Creating table ConferenceRecord
SchemaBuilder.CreateTable("ConferencePartRecord", table => table
.ContentPartRecord()
.Column("SoldOut", DbType.Boolean)
);
return 1;
}
public int UpdateFrom1()
{
// Create (or alter) a part called "ConferencePart" and configure it to be "attachable".
ContentDefinitionManager.AlterPartDefinition("ConferencePart", part => part
.Attachable());
return 2;
}
public int UpdateFrom2()
{
SchemaBuilder.AlterTable("ConferencePartRecord", table => table.AddColumn("OnlyShowTeaser", DbType.Boolean));
SchemaBuilder.AlterTable("ConferencePartRecord", table => table.AddColumn("TheYear", DbType.Int16));
SchemaBuilder.AlterTable("ConferencePartRecord", table => table.AddColumn("StartDate", DbType.DateTime));
SchemaBuilder.AlterTable("ConferencePartRecord", table => table.AddColumn("EndDate", DbType.DateTime));
SchemaBuilder.AlterTable("ConferencePartRecord", table => table.AddColumn("EarlyReg", DbType.DateTime));
SchemaBuilder.AlterTable("ConferencePartRecord", table => table.AddColumn("RegularReg", DbType.DateTime));
SchemaBuilder.AlterTable("ConferencePartRecord", table => table.AddColumn("LateReg", DbType.DateTime));
SchemaBuilder.AlterTable("ConferencePartRecord", table => table.AddColumn("ConfirmDate", DbType.DateTime));
SchemaBuilder.AlterTable("ConferencePartRecord", table => table.AddColumn("ConferenceSpace", DbType.Boolean));
SchemaBuilder.AlterTable("ConferencePartRecord", table => table.AddColumn("EarlyBirdException", DbType.Int16));
SchemaBuilder.AlterTable("ConferencePartRecord", table => table.AddColumn("NextConf", DbType.String));
return 3;
}
}
,最後,我的處理程序類:
public class ConferencePartHandler : ContentHandler
{
public ConferencePartHandler(IRepository<ConferencePartRecord> repository)
{
Filters.Add(StorageFilter.For(repository));
}
}