1

以下を使用して、ViewEngine に追加のパスを使用させようとしました。

base.MasterLocationFormats = new string[] {
    "~/Views/AddedMaster.Master"
};

ViewEngine のコンストラクターで。aspx と ascx(PartialViewLocationFormats, ViewLocationFormats) でうまく機能します。

web.config またはページ宣言で MasterPage を指定する必要があります。しかし、そうすると、ViewEngine の宣言ではなく、この宣言が使用されます。空の MasterLocationFormats を使用すると、エラーはスローされません。これは RC1 では実装されていませんか?

編集:

使用:

return View("Index", "AddedMaster");

それ以外の

return View("Index");

コントローラーで働いた。

4

1 に答える 1

1

あなたの例は完全ではありませんが、あなたのコード ブロックはクラス レベルに存在し、コンストラクター メソッド内には存在しないと推測します。それに関する問題は、基本クラス ( WebFormViewEngine) がコンストラクターで「場所の形式」プロパティを初期化するため、宣言をオーバーライドすることです。

public CustomViewEngine()
{
    MasterLocationFormats = new string[] {
        "~/Views/AddedMaster.Master"
    };
}

ハードコーディングされたマスターを最後の努力のデフォルトの一種としてのみ起動したい場合は、次のようにすることができます:

public CustomViewEngine()
{
    MasterLocationFormats = new List<string>(MasterLocationFormats) {
        "~/Views/AddedMaster.Master"
    }.ToArray();
}
于 2009-03-15T14:23:30.940 に答える