2012-03-20 55 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文件夹之外。