1

私は Spark がとても気に入っていますが、Web フォーム ベースのビューにはすでに大きな投資を行っています。既存のすべてのビューを前もって変換することなく、Spark の使用を開始したいと考えています。

Spark を Web フォームと並行して動作させる際に私が抱えている唯一の問題は、マスター ページです。現在、マスターページの 1 対 1 の複製である Spark レイアウトがあります。

この量の重複は受け入れられません。すでに何度か噛まれています。

Spark ビューを Web フォーム マスター内で動作させる方法はありますか? または、webforms ビューが Spark レイアウト内で機能するようにするには? どちらも重複の問題を解決します。

4

5 に答える 5

5

これを実現する方法は、マスターページのコンテンツのほとんどを部分ビューに移動してから、同じHtml.RenderPartial()呼び出しを使用するFoo.MasterとFoo.Master.sparkの2つのマスターページを作成することでした。 。両方のマスターには、同じ名前のコンテンツ領域があります。これにより、特定のビューにどちらかのエンジンを使用できるようになり、重複が可能な限り小さくなります。

個々のビューエンジンは、マスターとビューの両方を処理することが期待されています。IViewEngineの呼び出しは次のとおりです。

FindView(System.Web.Mvc.ControllerContext controllerContext, string viewName, string masterName, bool useCache)

マスターをビューから分離することはありません。

Sparkはこれを使用して、マルチパスレンダリングでマスターをビューやその他のトリックにコンパイルします。

于 2010-01-25T15:39:57.720 に答える
1

私はそうは思わない。アーキテクチャ的には、この 2 つはページをレンダリングする方法がまったく異なり、競合しています。それを実現するには、iFrame に相当するものを実行する必要があります。これは、アンチパターンの範囲でそれを実現するための非常に厄介な方法です。

マスター ページが読み込まれるまでに、Spark エンジンは既に終了しており、その逆も同様です。

Spark エンジン内でマスター ページがどのようにレンダリングされるかを模倣してみることができます。視覚的にだけではありません...私は、sparkを使用して自家製のマスターページのプリプロセッサをまとめることについて話しているのです。くわをするのは簡単ではありません。

于 2009-10-08T13:43:33.943 に答える
0

Html.RenderPartial("MySparkView") を呼び出すだけの非常に単純な .aspx ページで既存のマスター ページを使用して、既存のマスター ページ内にコンテンツをスパークさせることができます。

于 2009-11-21T21:12:57.550 に答える
0

ちょっとしたアイデアとして、Spark エンジンを使用して要求された .spark ビューをレンダリングするカスタム ビュー エンジン (または Spark のものを微調整) を作成してから、レンダリングされたコンテンツを渡す WebForms エンジンを呼び出します。これらの内部についての知識はありません。より簡単な方法は、レンダリングされた .spark HTML を .aspx に保存し、それを WebForms に選択させることですが、パフォーマンスは許容できません。

とにかく、それは可能だと思いますが、1) ビューエンジンの複雑な調整が必要になります.2) .spark ビューはほとんどが Spark レイアウトなしでレンダリングされるため、Spark/レイアウト機能の多くが失われます。

また、Spark メーリング リストで質問してみてください。

于 2009-10-08T17:26:30.000 に答える
0

これで運がいいですか?

スパーク ビューから System.Web.Mvc.ViewUserControl 呼び出し Html.RenderView() でスパーク ビューをホストすることができました。Html.RenderView() を使用して System.Web.Mvc.ViewUserControl 内で Spark ビューをホストすることもできるはずです。これにより、マスター ページを共有するいくつかのオプション (すべてオーバーヘッドあり) が導入されます。

  1. .spark ビュー用の単純なラッパー .ascx を記述します。それらには同じモデル オブジェクトがあり、ラッパーはラップされたビューで HtmlRenderPartial を呼び出すことができました。

  2. (逆) .ascx コントロールの単純なラッパー .spark を記述します。

ビュー Index.spark で masterpage Site.Master を使用しようとすると、次のエラー メッセージが表示されました。

The view 'Index' or its master could not be found. The following locations were searched:
~/Views/LfgSettings/Index.aspx
~/Views/LfgSettings/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
Layouts\Site.spark
Shared\Site.spark 

これらのパスが何を表しているのかはわかりませんが、インデックス ビューの検索パスとそのマスターページの検索パスのようです。.spark ファイルは .master マスターページを使用できないようです。

ただし、正しいコンテンツ領域を持つ .spark ファイルを呼び出すラッパー .master ファイルを作成できるかどうかは疑問です。Reflector'ing の中には、一緒に動作するように作成できるいくつかのインターフェイスをおそらく掘り下げるものがあります。

于 2009-11-05T04:02:57.067 に答える