ASP .NET MVC 3 + Views Folder + ASPX ViewPage

时间:2012-03-20 15:06:57

标签: asp.net-mvc-3 crystal-reports views viewpage

我正在使用ASP .NET MVC 3框架开发Web应用程序 我已经实现了一个包含CrystalReportViewer控件的ASPX ViewPage 我可以通过查看可下载的项目获得帮助:http://hasibulhaque.com/?p=244

这是加载我的ASPX ViewPage的动作序列:

  1. 调用控制器的动作方法。
  2. 重定向到ASPX ViewPage。
  3. 我的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 }
        );
    }
    

2 个答案:

答案 0 :(得分:1)

您没有提及有关控制器的任何信息。

在MVC中,所有Web请求(好吧,几乎所有)都通过控制器。如果你还没有定义一个控制器动作,它会给你一个404.那是非常基本的MVC,如果你不明白这一点,你真的需要回到教程。

视图永远不会直接呈现给客户端。如果您尝试发送带有代码的标准.aspx页面,那么这不是一个视图。这是一个网络形式。 MVC不允许通过URL直接访问Views文件夹,因为Views可以包含敏感信息。如果您想要直接访问的文件,则必须将其放在Views文件夹之外。

答案 1 :(得分:1)

View文件夹包含一个web.config文件,其中包含以下行:

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

此特殊处理程序阻止对Views文件夹的所有访问。如果删除这些行,您将能够访问ASPX页面。这些行是出于安全原因。如果您删除它们,您也可以直接查看所有剃须刀视图。