59
The view 'Index' or its master was not found. The following locations were searched:
~/Views/ControllerName/Index.aspx
~/Views/ControllerName/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx

ASP.Net mvc 領域を使用すると、このエラーが発生しました。エリア コントローラー アクションが呼び出されますが、エリア ビュー フォルダーではなく、「ベース」プロジェクト ビューでビューを探しているようです。

4

17 に答える 17

53

あなたがする必要があるのは、あなたのエリア名にトークンを設定することです:

例えば:

context.MapRoute(
        "SomeArea_default",
        "SomeArea/{controller}/{action}/{id}",
        new { controller = "SomeController", action = "Index", id = UrlParameter.Optional }
    ).DataTokens.Add("area", "YOURAREANAME");
于 2010-09-17T05:33:35.470 に答える
29

このエラーは、コントローラーのメソッド名がビューの名前と同じでないために発生しました。

コントローラー メソッドを右クリックして [ビューに移動] (Ctrl+M、Ctrl+G) を選択すると、ビューが開く (成功) か、ビューが見つからない (表示されているもの) というメッセージが表示されます。

  1. 対応する Controllers と View フォルダ名は同じ名前です。
  2. 対応するコントローラー メソッドとビュー ページは同じ名前にする必要があります。
  3. メソッド名がビュー名と異なる場合return view("viewName")は、メソッド内で.
于 2012-09-30T10:15:12.493 に答える
10

MyArea AreaRegistration.csで生成されたコードを確認し、コントローラー パラメーターが既定のコントローラーに設定されていることを確認します。そうしないと、何らかの理由でコントローラーがボットと呼ばれ、ASP.NET MVC はエリア フォルダーでビューを検索しません。

public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "SomeArea_default",
            "SomeArea/{controller}/{action}/{id}",
            new { controller = "SomeController", action = "Index", id = UrlParameter.Optional }
        );
    }
于 2010-06-06T20:06:30.537 に答える
6

このエラーが Web サーバーにデプロイされた場合にのみ発生する場合、問題はビューが正しくデプロイされていないことが原因である可能性があります。

これがどのように発生するかの例は、ビューのビルド アクションが Content ではなく None に設定されている場合です。

ビューが正しく展開されていることを確認する方法は、Web サーバー上のサイトの物理パスに移動し、ビューが存在することを確認することです。

于 2012-10-25T09:16:04.517 に答える
4

問題は、MvcRoute.MappUrlからMvcContribをルーティングするために使用したことでしたcontext.Routes

MvcContribルーティングマッパーはエリアルーティングに不快感を覚えたようです。

于 2010-02-16T01:09:03.930 に答える
3

ほとんどの場合、独自のビュー エンジンを作成していません。
デフォルトのビュー エンジンは、 と のビューを探し~/Views/[Controller]/ます~/Views/Shared/

ビューがエリア ビュー フォルダで検索されるようにするには、独自のビュー エンジンを作成する必要があります。

Phil Haack によるこの投稿をご覧ください。

于 2010-02-15T22:47:34.587 に答える
2

今日、Windows 8 上の IIS のローカル インスタンスに手動で展開された単純な VS 2013 MVC 5 プロジェクトで、この問題が発生しました。使用されているアプリケーション プールには、アプリケーション (フォルダー、フォルダー、等。)。アプリ プール ID をリセットした後、問題なく動作しました。

于 2014-11-04T17:33:58.840 に答える
2
  1. index()コントローラーからメソッドを右クリック
  2. 次にクリックしますgoto view

このアクションで index.cshtml を開くと?

問題は、IIS プールにビューの物理パスにアクセスする権限がないことです。

許可を与えることでテストできます。例:-c:\inetpub\wwwroot\yourweb次に、yourweb フォルダーを右クリックして、[プロパティ] -> [セキュリティ] に移動し、グループ名 Everyone を追加して、サイトを完全に制御できるようにします。これで問題が解決することを願っています。

于 2016-08-05T14:23:49.333 に答える
1

最終リリースではまだ問題があります..コンテキストメニュー/追加/エリアからエリアを作成するとき、ビジュアルスタジオはMapRouteメソッドの最後の引数内にコントローラーを配置しません。あなたはそれを世話する必要があり、私の場合、新しいエリアを作成するたびに手動で配置する必要があります.

于 2010-06-22T14:22:57.053 に答える
0

エリア登録に正しい MapRoutes がすべて含まれている場合でも、このエラーが発生する可能性があります。次の行をコントローラー アクションに追加してみてください。

If Not ControllerContext.RouteData.DataTokens.ContainsKey("area") Then
    ControllerContext.RouteData.DataTokens.Add("area", "MyAreaName")
End If
于 2011-11-16T15:35:39.427 に答える
0

エリア登録に正しい MapRoutes がすべて含まれていても、このエラーが発生する場合は、他のすべての基本構成に問題はありません。

これは状況です:

以下のJqueryファイルのコードを使用してデータをポストバックし、コントローラーアクションメソッドからビューをロードしました。

$.post("/Customers/ReturnRetailOnlySales", {petKey: '<%: Model.PetKey %>'}); 

上記の jQuery コードでは、成功のコールバック関数については触れていません。アクションメソッドでポストバックシナリオを終了した後、期待されるビューにルーティングせずにJquery側に戻ってきて、上記のようにビューが見つからないというエラーが発生しました。

次に、以下のような解決策を提供し、問題なく動作しました。

 $.post("/Customers/ReturnRetailOnlySales", {petKey: '<%: Model.PetKey %>'},
      function (data) {
 var url = Sys.Url.route('PetDetail', { action: "ReturnRetailOnlySalesItems", controller: "Customers",petKey: '<%: Model.PetKey %>'});
 window.location = url;});   

注:成功のコールバック関数内で、予想されるビュー アクション メソッドにリクエストを送信しました。その後、ビュー エンジンは、関連する領域のビュー ファイルを見つけて、正しくロードします。

于 2012-11-03T19:59:51.370 に答える
0

私はここで同じ問題を抱えていて、何だと思います.... csproj の xml' 構造を見ると、Content ノード (ItemGroup ノード内) が "none" になっていることに気付きました... 理由はわかりませんが、それが理由でした同じエラーが発生していましたが、それを他のものと同じように「コンテンツ」に編集しただけで、機能しています。

それが役立つことを願っています

于 2015-07-19T20:00:08.853 に答える
0

このエラーは、MSI インストーラーが実際にファイルを展開できなかった場合にも発生する可能性があります。

私の場合、.aspx ファイルを .cshtml ファイルに変換し、Visual Studio がこれらをまったく新しいファイルと見なし、コンテンツではなくビルド アクションを none に設定したために、これが発生しました。

于 2015-02-11T17:22:24.767 に答える