2013-02-17 11 views
16

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

しかし、レイアウトのページが、このパスである: "〜/ビュー/共有/ _layout"

それは問題のために何をすることができますか?

私はプロジェクトを開始し、それは次のようになります。

コントローラー:

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

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

Indexビュー:

@model dynamic 

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

<h2>title</h2> 

_ViewStart.cshtml:

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

ソリューション説明ORER:あなたの意見では、あなたがレイアウトをオーバーライドしている場合も

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

適切なパスがためspecifidであることを確認します。

Solution Explorer:

+0

** "〜/ Views/Home/_Layout" **これは参考になります。 @ layout = "〜/ Views/Home/_Layout"のようなステートメントは、このエラーを発生させるViewにありますか? –

+0

いいえ、それは次のようなものです:@ { ViewBag.Title = "title"; Layout = "_Layout"; } – anleon

+0

が役に立ちます。 @DarinDimitrovが指摘した通りにパスを設定すると修正されるはずです –

答えて

21

は、あなたが正しいパスを設定しているあなたの~/Views/_ViewStart.cshtmlファイルであることを確認しますこのレイアウト。それに加えて、レイアウトを設定しているサーバ側のコード(カスタムアクションフィルタ、またはレイアウトを指定できるオーバーロードなど)がある可能性があります。


UPDATE:

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

あなたは絶対パスとしてレイアウトに場所を指定する必要があります:

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

あなたは、このようなレイアウトを設定しているように見えますしかし、さらに良い方法は、Indexビューでこのレイアウト設定を取り除くことです:

@{ 
    ViewBag.Title = "title"; 
} 

_ViewStart.cshtmlの値が使用されます。

+0

はい、私はこれが好きです – anleon

+0

私は私の答えに他の考えられる理由を列挙しました。あなたはそれらすべてをチェックしましたか? –

+0

私はちょうどプロジェクトを始めたばかりではありません – anleon

関連する問題