私は最初の例ではないオーチャード・モジュールを開発しています。これは、カスタム(EF)データアクセスを備えたコントローラとビューの数少ないもので、オーチャードのコンテンツタイプやパーツにはほとんど依存しません。通常、私はApplication_Startハンドラでマッピングを設定しますが、このMVCモジュールのアクションはOrchardアプリケーションのコンテキストで呼び出されるため、そのエントリポイントはありません。私の最も明白で直接的な解決策は、マッピング初期化をマップされたビューモデルのための静的コンストラクタに移動することです。OrchardモジュールのAutoMapperマッピングはどこで初期化できますか?
public class ApplicantPersonalDetailsModel : MappedViewModel<Applicant>
{
static ApplicantPersonalDetailsModel()
{
Mapper.CreateMap<Applicant, ApplicantPersonalDetailsModel>().Bidirectional();
}
....
}
どうすればいいですか?一般的にMVC3/4でこれを行うより良い方法がありますか、またはイベントやフックを使ってOrchardアプリケーションを起動して、アプリケーション起動時にこれを達成することができますか?
'InitPartRecord'はダミーのクラス、つまり空のクラスですか? OrchardはすべてのハンドラでInitを呼び出すだけですか?それを定義するための他のコードを記述していない場合でも、どこかでパートを登録する必要はありますか? –
ProfK
はい、可能です.InitPartHandlerはContentHandlerから単純にドライブすることでハンドラリストに登録されます。InitPartとInitPartRecordはあなたが言及したようにダミークラスになります。 –