ASP .NET MVC 3 + папка «Виды» + ASPX ViewPage - PullRequest
0 голосов
/ 20 марта 2012

Я разрабатываю веб-приложение с использованием платформы ASP .NET MVC 3.
Я реализовал ASPX ViewPage, содержащий элемент управления CrystalReportViewer.
Я получил помощь, посмотрев на проект, загружаемый по адресу: http://hasibulhaque.com/?p=244

Вот последовательность действий для загрузки моего ASPX ViewPage:

  1. Вызывается метод действия контроллера.
  2. Перенаправление на ASPX ViewPage сделано.

Мой ASPX ViewPage находится в папке с именем AspNetForms.
Папка AspNetForms находится в корне моего проекта.

Я провел тест.
Iпереместил папку AspNetForms в папку Views.
Затем я обновил перенаправление, записанное в методе action.
Но затем я столкнулся с ошибкой 404 HTTP при попытке загрузить ASPX ViewPage.

Может кто-нибудь объяснить мне, что такого особенного в папке Views?

Я не уверен, что маршрутизация как-то связана с моей ошибкой HTTP.
Для информации вот мой метод RegisterRoutes, как написано в файле Global.asax.cs:

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 ]

1 голос
/ 20 марта 2012

Папка View содержит файл web.config со следующими строками:

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

Этот специальный обработчик блокирует весь доступ к папке Views.Если вы удалите эти строки, вы сможете получить доступ к своей странице ASPX.Эти строки являются их соображениями безопасности.Если вы удалите их, все ваши виды бритвы также можно будет просмотреть напрямую.

1 голос
/ 20 марта 2012

Вы ничего не упоминаете о вашем контроллере.

В MVC все веб-запросы (ну почти все) проходят через контроллер. Если вы не определили действие контроллера, оно даст вам 404. Это довольно простой MVC, и если вы не понимаете этого, вам действительно нужно вернуться к учебникам.

Представление никогда не отображается непосредственно клиенту. Если вы пытаетесь отправить стандартную страницу .aspx с кодом, то это не представление. Это веб-форма. MVC запрещает доступ к папке представлений напрямую через URL-адрес, поскольку представления могут содержать конфиденциальную информацию. Если вам нужен файл, к которому есть прямой доступ, он должен быть размещен вне папки Views.

...