Kevin KueblerのPluralsightチュートリアルに従って、Orchard1.4でカスタムモジュールを構築しています。必要なものはすべて揃っていると思いますが、モジュールを有効にして新しい記事(カスタムコンテンツタイプ)を追加しようとすると、カスタムコンテンツパーツのフィールドが表示されません。チュートリアルに従って何度もゼロから再構築しましたが、この同じ場所で立ち往生し続けています。私は答えをグーグルで検索しましたが、私が見ているものから、私は必要なものがすべて揃っています。以下は私のコードの一部です。
Migrations.cs
using Orchard.Core.Contents.Extensions;
using Orchard.Data.Migration;
using Orchard.ContentManagement.MetaData;
namespace Northern.Articles {
public class Migrations : DataMigrationImpl {
public int Create() {
ContentDefinitionManager.AlterTypeDefinition("Article", builder =>
builder.WithPart("CommonPart")
.WithPart("TitlePart")
.WithPart("AutoroutePart")
.WithPart("BodyPart", partBuilder =>
partBuilder.WithSetting("BodyTypePartSettings.Flavor","Text")
)
.Creatable()
.Draftable()
);
return 1;
}
public int UpdateFrom1() {
SchemaBuilder.CreateTable("ArticlePartRecord", table =>
table.ContentPartRecord()
.Column<int>("ArticleID")
.Column<string>("PrimaryImage", col => col.WithLength(300))
.Column<string>("ThumbImage", col => col.WithLength(300))
.Column<bool>("IsFeatured"));
ContentDefinitionManager.AlterTypeDefinition("Article", builder =>
builder.WithPart("ArticlePart"));
return 2;
}
}
}
ArticlePartRecord.cs
using Orchard.ContentManagement.Records;
namespace Northern.Articles.Models
{
public class ArticlePartRecord : ContentPartRecord
{
public virtual int ArticleID { get; set; }
public virtual string PrimaryImage { get; set; }
public virtual string ThumbImage { get; set; }
public virtual bool IsFeatured { get; set; }
}
}
ArticlePart.cs
using Orchard.ContentManagement;
namespace Northern.Articles.Models
{
public class ArticlePart : ContentPart<ArticlePartRecord>
{
public int ArticleID {
get { return Record.ArticleID; }
set { Record.ArticleID = value; }
}
public string PrimaryImage
{
get { return Record.PrimaryImage; }
set { Record.PrimaryImage = value; }
}
public string ThumbImage
{
get { return Record.ThumbImage; }
set { Record.ThumbImage = value; }
}
public bool IsFeatured
{
get { return Record.IsFeatured; }
set { Record.IsFeatured = value; }
}
}
}
ArticlePartDriver.cs
using Orchard.ContentManagement.Drivers;
using Northern.Articles.Models;
using Orchard.ContentManagement;
namespace Northern.Articles.Drivers
{
class ArticlePartDriver : ContentPartDriver<ArticlePart>
{
protected override string Prefix
{
get
{
return "Article";
}
}
//GET
protected override DriverResult Editor(ArticlePart part, dynamic shapeHelper)
{
return ContentShape("Parts_Article_Edit", () =>
shapeHelper.EditorTemplate(TemplateName: "Parts/Article", Model: part, Prefix: Prefix));
}
// POST
protected override DriverResult Editor(ArticlePart part, IUpdateModel updater, dynamic shapeHelper)
{
updater.TryUpdateModel(part, Prefix, null, null);
return Editor(part, shapeHelper);
}
}
}
ArticleHandler.cs
using Orchard.ContentManagement.Handlers;
using Orchard.Data;
using Northern.Articles.Models;
namespace Northern.Articles.Handler
{
public class ArticleHandler : ContentHandler
{
public ArticleHandler(IRepository<ArticlePartRecord> articlePartRepository)
{
Filters.Add(StorageFilter.For(articlePartRepository));
}
}
}
Views \ EditorTemplates \ Parts \ Article.cshtml
@model Northern.Articles.Models.ArticlePart
<fieldset>
<legend>@T("Article Details")</legend>
@Html.LabelFor(m => m.ArticleID, T("Article ID"))
@Html.TextBoxFor(m => m.ArticleID)
@Html.LabelFor(m => m.PrimaryImage, T("Primary Image"))
@Html.TextBoxFor(m => m.PrimaryImage)
@Html.LabelFor(m => m.ThumbImage, T("Thumbnail Image"))
@Html.TextBoxFor(m => m.ThumbImage)
@Html.LabelFor(m => m.IsFeatured, T("Is Featured"))
@Html.CheckBoxFor(m => m.IsFeatured);
</fieldset>
Placement.info
<?xml version="1.0" encoding="utf-8" ?>
<Placement>
<Place Parts_Article_Edit="Content:10"/>
</Placement>
モジュールが正しくロードされ、テーブルがDBに作成されます。記事を追加/編集するときに、フィールドが表示されません。
私が見ることができないものを見る助けをいただければ幸いです。