1

asp.net mvc2Webアプリのテーマを実装するためのカスタムビューエンジンを開発しています。私が直面している問題は、この関数の問題です。

public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)

パラメータ「masterName」は常に空ですが、viewNameは空ではなく、そのビューにはマスターページが関連付けられています。

マスターページを知りたいので、デフォルトのテーマを設定して、マスターページのみを変更し、コンテンツページは変更しないテーマを作成できるようにします。そのため、テーマを選択するときは、テーマのマスターページを使用しますが、デフォルトのテーマのコンテンツページを使用します。ただし、マスターページと一部のコンテンツページをオーバーライドするテーマと、そうでないテーマを作成する機能を提供したいと思います。このためには、ページが使用しているmasterNameのみが必要ですが、空の文字列を受け取ります:(

あなたはなにか考えはありますか?

前もって感謝します!ファン

4

1 に答える 1

1

パラメータ「masterName」はオプションです。デフォルトでは、ビューはビューで定義されたマスターページを使用しますが、パラメーターが指定されている場合は、提供されたマストページでこれをオーバーライドします。

例えば:

Return View("viewname", Model); // uses default master page
Return View("viewname", Model, "MasterName"); // users supplied MasterName

したがって、1つの解決策は、選択したテーマによってオーバーライドされない限り、マスター名の値を空白のままにして、View呼び出しでオーバーライドすることです。これにはカスタムビューエンジンは必要ありません

于 2010-10-12T12:16:04.880 に答える