2012-03-31 7 views
0

オーチャードのカスタムモジュールをthis wonderful guideの後に作成しました。次のように私はBarberAdminControllerと呼ばれるコントローラを作成したオーチャードカスタムモジュールが空白の「作成」ページを表示

[Admin] 
public class BarberAdminController : Controller 
{ 
    ... 

    public BarberAdminController(IOrchardServices services, IRepository<BarberPart> repository) 
    { 
     _repository = repository; 
     _services = services; 
    } 

    ... 

    public ActionResult Create() 
    { 
     var barber = _services.ContentManager.New(typeof(BarberPart).ToString()); 

     dynamic model = _services.ContentManager.BuildEditor(barber); 

     return View(model); 
    } 
} 

ビュー:

@{ Layout.Title = T("New Barber").ToString(); } 

@using (Html.BeginFormAntiForgeryPost()) { 
    @Html.ValidationSummary() 
    // Model is a Shape, calling Display() so that it is rendered using the most specific template for its Shape type 
    @Display(Model) 
} 

理容室を作成するために、管理者メニューからリンクをクリックすると、私は何も空白のページを取得します「保存」ボタンがあります。 (URL:/ Admin/BarberShop/Barbers/Create)

私は何が間違っているかもしれないか知っていますか?

私はルートと管理リンクを設定していますが、正常に動作しているようです。 BarberPartのドライバとハンドラを正しく作成するために、私ができる限りガイドに従った。 Migration.csファイルデータベーススキーマまでを含む。

助けがあれば助かります。

+0

多分配置がありません。このようになります/Views/EditorTemplates/Parts/Barber.cshtmlに位置する部分の編集テンプレートを持つようにしてください? –

答えて

0

私はそれを理解しました。

BarberPartのコンテンツパートとコンテンツタイプを定義する必要がありました。 Migrations.csでは、実行します。

ContentDefinitionManager.AlterPartDefinition(typeof(BarberPart).Name, p => p 
      .Attachable(false)); 
ContentDefinitionManager.AlterTypeDefinition("Barber", t => t 
      .WithPart(typeof(BarberPart).Name)); 

をコントローラの "作成" 方法では、交換してください:

var barber = _services.ContentManager.New(typeof(BarberPart).ToString()); 

で:

BarberPart barber = _services.ContentManager.New<BarberPart>("Barber"); 

すると、あなたがドライバーを持っていることを確認してください/ BarberDriver.csファイルそのもの:

public class BarberDriver : ContentPartDriver<BarberPart> 
{ 
    protected override DriverResult Editor(BarberPart part, dynamic shapeHelper) 
    { 
     return ContentShape("Parts_Barber_Edit",() => shapeHelper.EditorTemplate(TemplateName: "Parts/Barber", Model: part, Prefix: Prefix)); 
    } 

    protected override DriverResult Editor(BarberPart part, IUpdateModel updater, dynamic shapeHelper) 
    { 
     updater.TryUpdateModel(part, Prefix, null, null); 
     return Editor(part, shapeHelper); 
    } 
} 

Be

@model SDKU.Barbr.Models.BarberPart 

<fieldset> 
    @Html.EditorFor(model => model.SomePropertyName) 
    etc... 
</fieldset> 
関連する問題