1

カスタム ViewEngine で問題が発生しました。FindView メソッドを上書きして、すべてのビュー ページでマスター ビューを定義することなく、マスター ビューを設定しようとしています。

public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache)
{
    if (string.IsNullOrEmpty(masterName))
    {
        masterName = this.MasterView;
    }
    return base.FindView(controllerContext, viewName, masterName, useCache);
}

デバッガー ビューからはすべて問題ないように見えます。ビュー ページでプロパティ MasterPageFile を設定していません。

問題は、ブラウザに「コンテンツ コントロールは、マスター ページを参照するコンテンツ ページでのみ許可されています」と表示されることです。デバッガーが表示されずに。

なぜ、またはこれが予想される動作であるかを知っている人はいますか?

前もって感謝します!

4

1 に答える 1

1

わかりました、解決しました。それを機能させるには(少なくとも私の場合)、デフォルトのビューエンジンを削除するだけです:

ViewEngines.Engines.Clear();

そして、新しい(カスタム)ものを追加します:

ViewEngines.Engines.Add(new AreaViewEngine(this.MasterView));

出来上がり、それは動作します。

于 2010-09-29T18:20:13.287 に答える