2016-06-15 15 views
0

自分のアプリケーションにOrchard.Blogsという名前のモジュールを作成しました。今私は他のビューの部分的なビューとしてそれを作ることができますブログのビュー?例:http://localhost/Orchard.Web/Orchard.HrCompany/Payroll/GetPayが私のURLで、GetPayビューでOrchard.Blogsビューを部分ビューとして使用できますか?オーチャード・モジュール(部分図)

+0

いくつかのコードを追加してください。どのようなビューを再利用したいですか? Orchard.Blogsモジュールが既に存在する間に追加したのはなぜですか? – devqon

+0

申し訳ありません、追加していない、私はそれを有効にしました。私は別の視点でそのモジュールを必要としています。 –

+0

Orchard.Blogsのどのビューを再利用したいですか? – devqon

答えて

0

は、あなたはちょうどあなたが好きなビューを使用することができます。しかし、多くのビューにはビューモデルが必要です。たとえば、アクションメソッドによって返されたビューには、おそらくビューモデルがあります。そのビューを再利用する場合は、そのモデルのインスタンスも提供する必要があります。

他のビューはレンダリングされるシェイプで使用されます。これらのビューをレンダリングする場合は、実際にそのシェイプのインスタンスを作成する必要があります。これらのビューで特定のプロパティがシェイプ上に存在することが期待される場合は、それらのプロパティも設定する必要があります。

ご覧のとおり、これはあまり簡単ではありません。必要なデータを構築するために多くのロジックが複製される可能性があります(たとえば、図形を作成するコンテンツパーツドライバと考える)。

私が代わりにやっていることは、あなたが "再利用"しようとしているBlogsモジュールの特定のビューをお知らせください。おそらくもっと良い方法があるでしょう。たとえば、使用したいと思うBlogArchivesウィジェットがあります。または、特定のブログのすべての投稿をレンダリングするプロジェクションウィジェットです。

正確なユースケースのシナリオによっては、適切な解決策が必要です。私がリストした理由のために、他のモジュールからの盲目的な再利用は通常は行われません。

0

「シェイプ」と呼ばれる果樹園のすべてのビュー、そしてあなたが「IShapeFactory」インターフェースを備えた任意の場所に任意の形状をレンダリングすることができ、次のコードを試すことができます。

private readonly dynamic _shapeFactory; 
public Constructor(IShapeFactory shapeFactory) { 
    _shapeFactory = shapeFactory; 
} 
public void CreateShape(){ 
    dynamic customShape = _shapeFactory.CustomShape(ViewModel: viewModel); 
} 

このコードビューでの検索では、 「CustomShape」という名前で、名前付きパラメータを使用してレンダリングします。他の側で は、あなたのような任意のビューで直接、任意の形状を表示することができます。理論的には

@Display.CustomShape(ViewModel: viewModel) 
関連する問題