2012-03-20 93 views
0

我正在通過使用ASP .NET MVC 3框架開發Web應用程序。
我已經實現了一個包含CrystalReportViewer控件的ASPX ViewPage。
我已經在看項目下載得到的幫助:http://hasibulhaque.com/?p=244ASP .NET MVC 3 +視圖文件夾+ ASPX查看頁面

這裏是動作順序加載我的ASPX的ViewPage:

  1. 控制器的操作方法被調用。
  2. 重定向到ASPX查看頁面。

我的ASPX ViewPage位於名爲AspNetForms的文件夾中。
文件夾AspNetForms位於我的項目的根目錄下。

我做了一個測試。
我已經移動了Views文件夾下的AspNetForms文件夾。
然後我更新了在動作方法中寫入的重定向。
但是當我嘗試加載我的ASPX ViewPage時,我遇到了404 HTTP錯誤。

有人可以向我解釋Views文件夾有什麼特別之處嗎?

我不確定路由是否與我的HTTP錯誤有關。
有關信息在這裏是寫在Global.asax.cs中的文件我的RegisterRoutes方法:

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

的查看文件夾包含如下的web.config文件:

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

這個特殊的處理器阻止所有訪問視圖文件夾。如果您刪除這些行,您將能夠訪問您的ASPX頁面。這些行是出於安全原因。如果您將其刪除,則您的所有剃鬚刀視圖也可以直接查看。

1

你不提你的控制器東西。

在MVC中,所有的web請求(當然,幾乎所有)經過一個控制器。如果你沒有定義一個控制器動作,它會給你一個404。這是非常基本的MVC,如果你不明白這一點,你真的需要回到教程。

視圖從不直接向客戶端呈現。如果您試圖發送帶有代碼的標準.aspx頁面,那麼這不是一個視圖。這是一個網絡表格。 MVC不允許直接通過URL訪問Views文件夾,因爲Views可以包含敏感信息。如果你想要一個直接訪問的文件,它必須放在Views文件夾之外。