2012-03-20 31 views
0

私はASP .NET MVC 3フレームワークを使用してWebアプリケーションを開発しています。
CrystalReportViewerコントロールを含むASPX ViewPageを実装しました。私がプロジェクトのダウンロードを見て、助けを持っている
ASP .NET MVC 3 +ビューフォルダ+ ASPX ViewPage

  1. は、コントローラのアクションメソッドが呼び出される:http://hasibulhaque.com/?p=244

    は、ここに私のASPXビューページをロードするアクションシーケンスです。

  2. ASPX ViewPageへのリダイレクトが行われます。

私のASPXビューページはAspNetFormsという名前のフォルダ内にあります。
AspNetFormsフォルダは、私のプロジェクトのルートの下にあります。

私はテストをしました。
私はViewsフォルダの下にAspNetFormsフォルダを移動しました。
次に、アクションメソッドで書き込まれたリダイレクトを更新しました。
しかし、ASPX ViewPageを読み込もうとしたときに404 HTTPエラーが発生しました。

誰かが[ビュー]フォルダについてとても特別であるものを私に説明することができますか?

私はルーティングが私のHTTPエラーとは何かを持っているかどうかわかりません。あなたのコントローラについては何も言及していない

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     "Default", // Route name 
     "{controller}/{action}/{id}", // URL with parameters 
     // Default parameters 
     new { controller = "Accueil", action = "Accueil", id = UrlParameter.Optional } 
    ); 
} 

答えて

1

Viewフォルダは、次の行を含むweb.configファイルが含まれています。これらの行を削除すると、ASPXページにアクセスできます。これらの行はセキュリティ上の理由からです。それらを取り除くと、すべてのかみそりのビューも直接見ることができます。

1

:情報について
は、ここではGlobal.asax.csファイルに記述されたように私RegisterRoutes方法です。

MVCでは、すべてのWebリクエスト(ほぼすべて)がコントローラを経由します。コントローラーアクションを定義していない場合は、404が表示されます。これはかなり基本的なMVCです。これを理解していない場合は、実際にチュートリアルに戻る必要があります。

ビューは決してクライアントに直接レンダリングされません。標準の.aspxページをコードの背後に送信しようとすると、これは表示ではありません。それはウェブフォームです。ビューには機密情報が含まれている可能性があるため、MVCはURL経由で直接Viewsフォルダへのアクセスを許可しません。直接アクセスするファイルが必要な場合は、Viewsフォルダの外に配置する必要があります。

<handlers> 
     <remove name="BlockViewHandler"/> 
     <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 
</handlers> 

この特別なハンドラブロックビュー]フォルダへのすべてのアクセス: