2012-10-03 39 views
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)); 
    } 
} 

回答

0

當然,我在發佈問題5分鐘後發現問題。我錯過了編輯器cshtml文件中的某個日期時間字段,並且當它保存到數據庫時,它正在更新中死去,因爲日期列不會爲空。

相關問題