web-dev-qa-db-ja.com

ビューに_Layout.cshtmlが含まれていないのはなぜですか?

最近、MVC3プロジェクトにいくつかの変更を加えました。

私がそれを実行すると、ビューにはSite.cssのようなファイルが含まれません。 Index()ActionControllerをデバッグすると、_Layout.cshtmlなどのファイルを含めずに、ビューに直接ジャンプします。だから私は白い背景のビューを取得し、メニューなどはありません。

Global.asax.csファイルには、次のコードが含まれています。

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );

    routes.MapRoute(
        "Default2", // Route name
        "{controller}/{action}/{id}/{page}", // URL with parameters
        new { controller = "Survey", action = "DisplayQuestions", id = "", page = "" }
    );
}
17
Kenci

コントローラアクションのブレークポイントがヒットしている場合、ルートが間違っている可能性がありますが、それが_Layout.cshtmlがロードされない理由ではありません。

チェックするいくつかの事柄:

  • ビューはPartialView()ではなくView()を使用していますか(後者はViewStart.cshtmlを無視するため、_Layout.cshtmlを無視します)。
  • 最近_Layout.cshtmlを移動しましたか/ Sharedの名前を変更しましたか(または誤ってSharedControllerを作成しましたか)?
  • ビューの上部に、_Layout.cshtmlを非アクティブ化するようなものが含まれていますか?

    @{
        Layout = "";
    }
    
  • _ViewStart.cshtmlは、_Layout.cshtmlをアクティブ化する次のコードでまだ存在していますか?

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

「Default2」ルートを「Default」ルートの上に移動します。

デフォルトルートはより一般的であるため、Default2を最初にする必要があります

また、ビュー内で、使用するレイアウトを指定していることを確認してください

@{
    Layout = "yourlayoutpage.cshtml"
}
2
jsmith

インデックスビューのlayoutプロパティを削除したようです。

@{
Layout = "~/Views/Shared/_Layout.cshtml"
}
1
Jamie Dixon