web-dev-qa-db-ja.com

ビュー「インデックス」またはそのマスターが見つかりませんでした。

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エリアを使用すると、このエラーが発生しました。エリアコントローラーアクションが呼び出されますが、エリアビューフォルダーではなく、「ベース」プロジェクトビューでビューを探すようです。

57

問題は、私がMvcRoute.MappUrl from MvcContribからcontext.Routes

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

4

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

例えば:

context.MapRoute(
        "SomeArea_default",
        "SomeArea/{controller}/{action}/{id}",
        new { controller = "SomeController", action = "Index", id = UrlParameter.Optional }
    ).DataTokens.Add("area", "YOURAREANAME");
52

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

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

  1. 対応するコントローラーとビューフォルダーの名前は同じ名前です。
  2. 対応するコントローラーメソッドとビューのページは同じ名前にする必要があります。
  3. メソッド名がビュー名と異なる場合、メソッドのreturn view("viewName")
28
Sai Sherlekar

Global.asaxファイルにはURLルートが含まれています。このようなデフォルトのURLルート。

_"{controller}/{action}/{id}"
_

だから、これを試してください。

1。以下のようにコントローラーメソッドを右クリックします。

例:Index()メソッドを呼び出したとしましょう。右クリックします。 enter image description here

2。 [ビューの追加...]をクリックし、適切な名前を付けます。この例では、名前はIndexです。

enter image description here

次に、関連するフォルダー構造で作成することにより、正しいビューを追加します。

14
Elshan

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

public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "SomeArea_default",
            "SomeArea/{controller}/{action}/{id}",
            new { controller = "SomeController", action = "Index", id = UrlParameter.Optional }
        );
    }
10
Raphael

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

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

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

5
Scott Munro

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

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

この投稿 Phil Haackを見てください。

3
Çağdaş Tekin
  1. コントローラーからindex()メソッドを右クリックします
  2. goto viewをクリックします

このアクションがindex.cshtmlを開く場合は?

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

許可を与えることでテストできます。例えば:-c:\inetpub\wwwroot\yourwebに移動し、yourwebフォルダーを右クリック->プロパティ-> securityにグループ名を追加し、サイトへのフルコントロールを許可します。これで問題が解決することを願っています。

2
Beruk Berhane

今日、この問題が発生したのは、Windows 8でローカルインスタンスIISに手動でデプロイされたVS 2013 MVC 5プロジェクトを単純にそのまま使用したためです。使用されているアプリケーションプールにはアプリケーション(フォルダーなど)への適切なアクセス。AppPool IDをリセットした後、正常に機能しました。

2
Greg Grater

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

1
Michael Castro

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

これは状況です:

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

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

上記のjQueryコードI 成功コールバック関数については言及していませんでした。そこで発生したのは、アクションメソッドのポストバックシナリオを完了した後、予想されるビューにルーティングせずに、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;});   

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

0
Sampath

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

If Not ControllerContext.RouteData.DataTokens.ContainsKey("area") Then
    ControllerContext.RouteData.DataTokens.Add("area", "MyAreaName")
End If

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

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

0
MGE

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

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

0
micahhoover

私もこの問題を抱えています。コントローラと同じ名前のフォルダ内にビューページを含めるのを忘れていることに気付きました。

コントローラー:adminController View-> Admin-> view1.cshtml

(View-> view1.cshtml)(フォルダはありません:Admin)

0
freewill