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エリアを使用すると、このエラーが発生しました。エリアコントローラーアクションが呼び出されますが、エリアビューフォルダーではなく、「ベース」プロジェクトビューでビューを探すようです。
問題は、私がMvcRoute.MappUrl
from MvcContrib
からcontext.Routes
。
MvcContrib
ルーティングマッパーは、エリアルーティングに不快感を覚えたようです。
行う必要があるのは、エリア名にトークンを設定することです。
例えば:
context.MapRoute(
"SomeArea_default",
"SomeArea/{controller}/{action}/{id}",
new { controller = "SomeController", action = "Index", id = UrlParameter.Optional }
).DataTokens.Add("area", "YOURAREANAME");
コントローラのメソッド名がビューの名前と同じではないため、このエラーが発生しました。
コントローラーメソッドを右クリックして[ビューに移動](Ctrl + M、Ctrl + G)を選択すると、ビューが開く(成功)か、見つからないという不満が表示されます(表示されているもの)。
return view("viewName")
。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 }
);
}
このエラーが発生するのは、Webサーバーにデプロイされた場合のみです。ビューが正しくデプロイされていないことが原因である可能性があります。
これがどのように発生するかの例は、ビューのビルドアクションがコンテンツではなく[なし]に設定されている場合です。
ビューが正しく展開されていることを確認する方法は、Webサーバー上のサイトの物理パスに移動し、ビューが存在することを確認することです。
ほとんどの場合、独自のビューエンジンを作成していません。
デフォルトのビューエンジンは、~/Views/[Controller]/
および~/Views/Shared/
。
独自のビューエンジンを作成して、ビューがエリアビューフォルダーで確実に検索されるようにする必要があります。
この投稿 Phil Haackを見てください。
index()
メソッドを右クリックしますgoto view
をクリックしますこのアクションがindex.cshtmlを開く場合は?
あなたの問題はIISプールにビューの物理パスにアクセスする権限がないことです。
許可を与えることでテストできます。例えば:-c:\inetpub\wwwroot\yourweb
に移動し、yourwebフォルダーを右クリック->プロパティ-> securityにグループ名を追加し、サイトへのフルコントロールを許可します。これで問題が解決することを願っています。
今日、この問題が発生したのは、Windows 8でローカルインスタンスIISに手動でデプロイされたVS 2013 MVC 5プロジェクトを単純にそのまま使用したためです。使用されているアプリケーションプールにはアプリケーション(フォルダーなど)への適切なアクセス。AppPool IDをリセットした後、正常に機能しました。
最終リリースではまだ問題です。コンテキストメニュー/追加/エリアからエリアを作成するとき、Visual StudioはMapRouteメソッドの最後の引数にコントローラーを入れないでください。あなたはそれの世話をする必要があり、私の場合は、新しいエリアを作成するたびに手動で配置する必要があります。
エリア登録のすべての正しい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;});
注:成功コールバック関数内のリクエストをビュービューアクションメソッドに送信しました。その後、ビューエンジンは関連するエリアのビューファイルを見つけ、正しくロードしました。
エリア登録のすべての正しいMapRoutesでもこのエラーが発生する可能性があります。次の行をコントローラーアクションに追加してみてください。
If Not ControllerContext.RouteData.DataTokens.ContainsKey("area") Then
ControllerContext.RouteData.DataTokens.Add("area", "MyAreaName")
End If
私はここで同じ問題を抱えて、何を推測します... csprojのxml '構造を見ると、Contentノード(ItemGroupノード内)が「なし」であることに気づきました...理由はわかりませんが、それが理由でした同じエラーが発生していましたが、それを他のユーザーと同じ「コンテンツ」に編集しただけで、機能しています。
役立つことを願っています
このエラーは、MSIインストーラーが実際にファイルを展開できなかった場合にも発生する可能性があります。
私の場合、これは、.aspxファイルを.cshtmlファイルに変換し、Visual Studioがこれらをまったく新しいファイルであると判断し、ビルドアクションをコンテンツではなくnoneに設定したために発生しました。
私もこの問題を抱えています。コントローラと同じ名前のフォルダ内にビューページを含めるのを忘れていることに気付きました。
コントローラー:adminController View-> Admin-> view1.cshtml
(View-> view1.cshtml)(フォルダはありません:Admin)