2012-06-03 3 views
-2

Я создал пользовательский модуль, используя этот guide из документации Orchard, но по какой-то причине я не вижу поля в типе контента, когда хочу создать новый.Создание настраиваемого модуля для 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; } } 
} 

это Handler:

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; 
    } 

} 

Может кто-нибудь скажет мне, если я что-то упустил?

ответ

0

Вы добавили запись в файл placement.info? Иногда я забываю об этом. Без места размещения он не будет знать, где разместить свой контент, чтобы он просто не отображался.

+0

Да, я включил его в главную директорию моего модуля –

+0

, можете ли вы посмотреть мой файл миграции? У меня есть ощущение, что там что-то не так, может быть, слишком много частей, которые я включаю, или что-то не так с AlterTypeDefinition –

+0

И что в файле места размещения? –

Смежные вопросы