私はOrchard 1.4でKevin KueblerのPluralsightチュートリアルに従ってカスタムモジュールを構築しています。必要な場所にすべてがあると思いますが、モジュールを有効にして新しいアーティクル(カスタムコンテンツタイプ)を追加しようとすると、カスタムコンテンツパートのフィールドが表示されません。私はチュートリアルに続いて何度も最初から再構築しましたが、この同じ場所で立ち往生し続けています。私は答えを求めてグーグルで見つけましたが、私が見ていることから、私は必要な場所にすべてを持っています。以下は私のコードです。カスタムオーチャードCMS 1.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));
}
}
}
ビュー\ EditorTemplates \パーツ\ 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、私は記事を追加/編集するときにフィールドが表示されないだけです。
私が見ることができないものを見て助けていただければ幸いです。
明らかに間違っているようです。次のステップは、おそらくドライバーにブレークポイントを設定し、ヒットしたかどうかを確認することです。 –