22

エラーが表示されます:レイアウト ページ "_Layout" がパス "~/Views/Home/_Layout" に見つかりませんでした。

ただし、レイアウト ページは次のパスにあります: "~/Views/Shared/_Layout"

問題の原因は何ですか?

プロジェクトを開始したばかりで、次のようになります。

コントローラ:

namespace Testing.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View();
        }
    }
}

インデックス ビュー:

@model dynamic

@{
    ViewBag.Title = "title";
    Layout = "_Layout";
}

<h2>title</h2>

_ViewStart.cshtml:

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

ソリューション エクスプローラー:

ソリューション エクスプローラー:

4

6 に答える 6

36

~/Views/_ViewStart.cshtmlファイルに正しいパスが設定されていることを確認してください。

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

また、ビューでレイアウトをオーバーライドする場合は、このレイアウトに適切なパスが指定されていることを確認してください。それに加えて、レイアウトを設定しているサーバー側のコード (カスタム アクション フィルター、またはViewResultレイアウトを指定できるオーバーロードなど) が存在する可能性があります。


アップデート:

次のようにレイアウトを設定したようです:

@{ 
    ViewBag.Title = "title"; 
    Layout = "_Layout"; 
} 

レイアウトへの場所を絶対パスとして指定する必要があります。

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

しかし、さらに良い方法は、ビューでこのレイアウト設定を取り除くことですIndex:

@{ 
    ViewBag.Title = "title"; 
}

これで、あなたの値_ViewStart.cshtmlが使用されます。

于 2013-02-17T17:13:57.117 に答える