-2

Orchard ドキュメントのこのガイドを使用してカスタム モジュールを作成しましたが、何らかの理由で、新しいモジュールを作成するときにコンテンツ タイプのフィールドが表示されません。

これは私のモデルです:

public class CustomerPartRecord : ContentPartRecord
{
    public virtual string FirstName { get; set; }
    public virtual string LastName { get; set; }
    public virtual int PhoneNumber { get; set; }
    public virtual string Address { get; set; }
    public virtual string Profession { get; set; }
    public virtual string ProDescription { get; set; }
    public virtual int Hours { get; set; }
}
public class CustomerPart : ContentPart<CustomerPartRecord>
{

    [Required(ErrorMessage="you must enter your first name")]
    [StringLength(200)]
    public string FirstName { get { return Record.FirstName; } set { Record.FirstName = value; } }

    [Required(ErrorMessage = "you must enter your last name")]
    [StringLength(200)]
    public string LastName { get { return Record.LastName; } set { Record.LastName = value; } }

    [Required(ErrorMessage = "you must enter your phone number")]
    [DataType(DataType.PhoneNumber)]
    public int PhoneNumber { get { return Record.PhoneNumber; } set { Record.PhoneNumber = value; } }

    [StringLength(200)]
    public string Address { get { return Record.Address; } set { Record.Address = value; } }

    [Required(ErrorMessage = "you must enter your profession")]
    [StringLength(200)]
    public string Profession { get { return Record.Profession; } set { Record.Profession = value; } }

    [StringLength(500)]
    public string ProDescription { get { return Record.ProDescription; } set { Record.ProDescription = value; } }

    [Required(ErrorMessage = "you must enter your hours")]
    public int Hours { get { return Record.Hours; } set { Record.Hours = value; } }
}

これはハンドラです:

class CustomerHandler : ContentHandler
{
    public CustomerHandler(IRepository<CustomerPartRecord> repository)
    {
        Filters.Add(StorageFilter.For(repository));
    }
}

ドライバ:

class CustomerDriver : ContentPartDriver<CustomerPart>
{
    protected override DriverResult Display(CustomerPart part, string displayType, dynamic shapeHelper)
    {
        return ContentShape("Parts_Customer", () => shapeHelper.Parts_Customer(
            FirstName: part.FirstName,
            LastName: part.LastName,
            PhoneNumber: part.PhoneNumber,
            Address: part.Address,
            Profession: part.Profession,
            ProDescription: part.ProDescription,
            Hours: part.Hours));
    }
    //GET
    protected override DriverResult Editor(CustomerPart part, dynamic shapeHelper)
    {
        return ContentShape("Parts_Customer", () => shapeHelper.EditorTemplate(
            TemplateName:"Parts/Customer",
            Model: part,
            Prefix: Prefix));
    }
    //POST
    protected override DriverResult Editor(CustomerPart part, IUpdateModel updater, dynamic shapeHelper)
    {
        updater.TryUpdateModel(part, Prefix, null, null);
        return Editor(part, shapeHelper);
    }

移行:

public class Migrations : DataMigrationImpl
{
    public int Create()
    {
        // Creating table CustomerPartRecord
        SchemaBuilder.CreateTable("CustomerPartRecord", table => table
            .ContentPartRecord()
            .Column("FirstName", DbType.String)
            .Column("LastName", DbType.String)
            .Column("PhoneNumber", DbType.Int32)
            .Column("Address", DbType.String)
            .Column("Profession", DbType.String)
            .Column("ProDescription", DbType.String)
            .Column("Hours", DbType.Int32)
        );
        return 1;
    }
    public int UpdateFrom1()
    {
        ContentDefinitionManager.AlterPartDefinition("CustomerPart",
          builder => builder.Attachable());
        return 2;
    }
    public int UpdateFrom2()
    {
        ContentDefinitionManager.AlterTypeDefinition("Customer", cfg => cfg
          .WithPart("CommonPart")
          .WithPart("RoutePart")
          .WithPart("BodyPart")
          .WithPart("CustomerPart")
          .WithPart("CommentsPart")
          .WithPart("TagsPart")
          .WithPart("LocalizationPart")
          .Creatable()
          .Indexed());
        return 3;
    }

}

私が何か不足している場合、誰かが私に教えてもらえますか?

4

1 に答える 1

0

placement.infoファイルにエントリを追加しましたか?時々忘れます。配置しないと、コンテンツをどこに配置するかわからないため、レンダリングされません。

于 2012-06-03T16:35:37.713 に答える