2012-03-20 10 views
0

ASP .NET MVC 3 프레임 워크를 사용하여 웹 응용 프로그램을 개발 중입니다.
CrystalReportViewer 컨트롤이 포함 된 ASPX ViewPage를 구현했습니다. 나는에서 프로젝트 다운로드를보고 도움을 가지고
:ASP .NET MVC 3 +보기 폴더 + ASPX ViewPage

  1. 는 컨트롤러의 액션 메서드가 호출 : http://hasibulhaque.com/?p=244

    은 여기 내 ASPX ViewPage를로드 할 작업의 순서입니다.

  2. ASPX ViewPage로 리디렉션됩니다.

내 ASPX ViewPage는 AspNetForms라는 폴더에 있습니다.
AspNetForms 폴더가 내 프로젝트의 루트 아래에 있습니다.

나는 테스트를했다.
Views 폴더 아래에서 AspNetForms 폴더를 이동했습니다.
그런 다음 작업 메서드로 작성된 리디렉션을 업데이트했습니다.
하지만 ASPX ViewPage를로드하려고하면 404 HTTP 오류가 발생합니다.

누군가 내 Views 폴더에 대해 특별한 점을 설명 할 수 있습니까?

라우팅에 내 HTTP 오류와 관련이 있는지 확실하지 않습니다. 당신은 당신의 컨트롤러에 대해 아무것도 언급하지 않는

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 파일이 포함되어 있습니다. 해당 줄을 제거하면 ASPX 페이지에 액세스 할 수 있습니다. 보안상의 이유로이 라인들이 있습니다. 면도 면도날을 모두 제거하면 직접 볼 수 있습니다.

1

: 정보
여기 Global.asax.cs 파일에 기록 된대로 내 RegisterRoutes 방법입니다.

MVC에서 모든 웹 요청 (거의 모든 것)은 컨트롤러를 통과합니다. 컨트롤러 액션을 정의하지 않았다면 404를 제공 할 것입니다. 이것은 꽤 기본적인 MVC입니다.이 것을 이해하지 못한다면 튜토리얼로 돌아 가야합니다.

뷰는 절대로 클라이언트에 직접 렌더링되지 않습니다. 코드가 포함 된 표준 .aspx 페이지를 보내려는 경우 이는보기가 아닙니다. 그것은 웹 양식입니다. 뷰에는 민감한 정보가 포함될 수 있으므로 MVC에서는 URL을 통해 Views 폴더에 직접 액세스 할 수 없습니다. 직접 액세스되는 파일을 원하면 Views 폴더 외부에 배치해야합니다.

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

이 특별한 핸들러 블록 뷰 폴더에 대한 모든 액세스 :