0

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

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

  1. 调用控制器的动作方法。
  2. 重定向到 ASPX ViewPage。

我的 ASPX ViewPage 位于名为 AspNetForms 的文件夹中。
AspNetForms 文件夹位于我项目的根目录下。

我做了一个测试。
我已将 AspNetForms 文件夹移到 Views 文件夹下。
然后我更新了action方法中写的重定向。
但是当我尝试加载我的 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 }
    );
}
4

2 回答 2

1

你没有提到任何关于你的控制器的事情。

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

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

于 2012-03-20T15:12:11.463 回答
1

View 文件夹包含一个带有以下行的 web.config 文件:

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

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

于 2012-03-20T15:22:55.490 回答