2013-06-04 32 views
0

我遇到了果园问题。 我创建了一个小部件,是一个视频播放器,这是一个简单的小部件类ContentPartRecord:果园中的小部件不会保存到数据库中

public class VideoPlayerPartRecord : ContentPartRecord 
    { 
     public virtual string MediaFile { get; set; } 
     public virtual int Width { get; set; } 
     public virtual int Height { get; set; } 
     public virtual bool AutoStart { get; set; } 
     public virtual bool Repeat { get; set; } 
    } 

和类ContentPart:

public class VideoPlayerPart : ContentPart<VideoPlayerPartRecord> 
     { 
      [Required(ErrorMessage = "Media File required")] 
      [Display(Name = "Media File: ")] 
      public string MediaFile 
      { 
       get { return Record.MediaFile; } 
       set { Record.MediaFile = value; } 
      } 

      [Required(ErrorMessage = "Width required")] 
      [Display(Name = "Width: ")] 
      public int Width 
      { 
       get { return Record.Width; } 
       set { Record.Width = value; } 
      } 

      [Required(ErrorMessage = "Height required")] 
      [Display(Name = "Height: ")] 
      public int Height 
      { 
       get { return Record.Height; } 
       set { Record.Height = value; } 
      } 

      [Display(Name = "Auto Start: ")] 
      public bool AutoStart 
      { 
       get { return Record.AutoStart; } 
       set { Record.AutoStart = value; } 
      } 

      [Display(Name = "Repeat: ")] 
      public bool Repeat 
      { 
       get { return Record.Repeat; } 
       set { Record.Repeat = value; } 
      } 
     } 

这是文件迁移:

public class Migrations : DataMigrationImpl { 

      public int Create() { 
       // Creating table default_Raise_VideoPlayer_VideoPlayePartRecord 
       SchemaBuilder.CreateTable("default_Raise_VideoPlayer_VideoPlayePartRecord", table => table 
        .ContentPartRecord() 
        .Column("MediaFile", DbType.String) 
        .Column("Width", DbType.Int32) 
        .Column("Height", DbType.Int32) 
        .Column("AutoStart", DbType.Boolean) 
        .Column("Repeat", DbType.Boolean) 
       ); 

       ContentDefinitionManager.AlterPartDefinition(typeof(VideoPlayerPart).Name, cfg => cfg 
        .Attachable()); 

       return 1; 
      } 

      public int UpdateFrom1() { 
       ContentDefinitionManager.AlterTypeDefinition("VideoPlayerWidget", cfg => cfg 
        .WithPart("VideoPlayerPart") 
        .WithPart("WidgetPart") 
        .WithPart("CommonPart") 
        .WithSetting("Stereotype", "Widget")); 

       return 2; 

      } 


     } 

问题是,当我插入小部件它被添加,但我看不到它。为什么??

+0

您是否还为内容部分创建了一个处理程序和驱动程序类? – mdm

回答

1

您需要为您的小部件添加一个Handler以持久保存项目,并使用placement.info条目来呈现它。

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

(从文章取代码)

using Maps.Models; 
using Orchard.ContentManagement.Handlers; 
using Orchard.Data; 

namespace Maps.Handlers { 
    public class MapHandler : ContentHandler { 
     public MapHandler(IRepository<MapRecord> repository) { 
      Filters.Add(StorageFilter.For(repository)); 
     } 
    } 
} 

和Placement.info

<Placement> 
    <Place Parts_Map="Content:10"/> 
    <Place Parts_Map_Edit="Content:7.5"/> 
</Placement> 

如果它不保存到数据库 - 它可能处理程序。如果它不显示在屏幕上,它可能是placement.info

你也没有提及有一个驱动程序或一个视图,但我想这是处理程序或你失踪的位置信息。此外,在关联驱动程序,迁移和放置信息时,请仔细检查拼写和惯例,因为如果您手动创建零件,有几个地方可以使用错误的文本字符串。

相关问题