2011-12-18 12 views
2

自分のサイトのほとんどで、_ViewStart.cshtmlに設定された共有レイアウトファイルを使用しています。線に沿って何か:共有レイアウトがエラーメッセージに使用されないようにすることはできますか?

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

あり、私のサイトのほとんどの間で共有されていない情報がほとんどであり、エラーがページを報告します。どのように2つの状況を区別しますか?

すべてのページで共有レイアウトを読み込みたい場合は、エラーを報告するものを除きます。

答えて

2

ページ/ビューごと

@{ 
    var model = ViewContext.Controller.ViewData.Model; 
    if (model is System.Web.Mvc.HandleErrorInfo) { 
    Layout = ""; 
    } else { 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 
} 

にレイアウトを変更することができますこれは私のPost.vbhtmlページからである - 私はちょうど別のレイアウトを使用するようにレイアウトページを変更する必要があります。

+0

私はちょうどそれを試みた - 私は私のpost.vbhtmlページの上部にレイアウト指示を変更し、それ別のレイアウトページを使用しました。 –

+0

このオプションは、*正しいと思う解決法を提供しますが、*正しく動作しません。共有ビューの読み込みを特に避けるように求めています。最終結果としてそれを表示しないことは時間の中では有用かもしれませんが、私の使用事例には微妙な(そして非常に重要な)方法では失敗します。 – blueberryfields

1

この質問には、があります。慎重に選択し、不明な場合は受け入れられた回答を使用してください


微妙時には重要違い受け入れ答えと以下人気の代替があります。以下の代替はの結果になりますが、ほとんどの場合は正しく表示されますが、常に動作するとは限りません。これは、ロード・オーダーとビュー・ファイルの実行によるものです。最上位の共有ビューが最初にロードされて実行されます。最初のロード+実行プロセスに副作用がある場合、このソリューションは奇妙で重要な方法で壊れます。

_ ViewStart.cshtml

@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

ビューファイルの先頭に次の追加することで、レイアウトを使用しないように、適切なビューを指示:

ErrorView.cshtml

@{ 
    Layout = ""; 
} 
関連する問題