2009-07-17 3 views
0

이것은 라우팅 장치에 대한 기본적인 질문입니다. 새로운 MVC 프로젝트에서, 나는이 HomeController이있다 : 뷰 \ 홈 폴더에서ASP.NET MVC 기본 라우팅 없음보기 이름

public ActionResult MyPage() 
{ 
    return View(); 
} 

을, 나는 MyPage.aspx 있습니다. 라우팅은 여전히 ​​{controller}/{action}/{id}의 기본값입니다. http://localhost:1790/Home/MyPage을 입력하면 MyPage.aspx에 대한 정확한 경로입니다. 렌더링 할 뷰가 무엇인지에 대해서는 언급하지 않았으므로 ASP.NET MVC는 MyPage.aspx로 올바르게 라우팅하는 방법을 알고 있습니까? 마치 ActionResult 이름을 View/aspx 페이지 이름으로도 사용할 수있는 것처럼 보입니다. 라우팅이 어떻게 작동하는지 오해 한 것이 아닌 한. 컨트롤러 이름이 View 하위 폴더 이름과 일치하기 때문에 Home 폴더에서 어떻게 끝나는 지 알 수 있습니다. 하지만 Action 이름도 aspx 이름과 일치합니까?

페이지가 PHP 인 경우 작동합니까?

답변

1

MVC는 View() 만 반환하면 View ("MyPage") (즉 액션 이름)가 필요하다고 암묵적으로 간주합니다. 불필요하게 반복해서 감각이 없습니다.

기본적으로 PHP 파일을 찾을 수 없지만 실제로 원한다면 그 동작을 재정의 할 수 있습니다. PHP와 ASP.NET MVC를 혼합하는 시나리오는 상상할 수 없습니다. 그러나 누가 알겠습니까?

1

작업 이름은보기/부분보기 이름과 동일합니다.

asp.net mvc는 내가 아는 한 PHP에서 작동하지 않습니다.

3

ASP.NET MVC는 컨벤션 이상의 컨벤션으로 알려진 컨텍스트에 가입하는 반면, 컨벤션을 준수하면 라우팅 문제와 같은 기본적인 사항이 발생합니다. 그러나 원하는 경우 구성 할 수도 있습니다.

1

이미 설명한 바와 같이 ASP.NET MVC는 컨벤션 오버 규칙을 사용합니다. 아웃 박스, 폴더 구조는 다음과 같이 (만 부를 도시 등 메모리에서 그 일을 ...)

사이트 루트

+ Controllers 
    HomeController.cs 
    AccountController.cs 
+ Views 
    + Home 
     Index.aspx 
    + Account 
     Index.aspx 
    + Shared 

기본 라우팅 핸들러는 다음과 유사한입니다 :

"{controller}/{action}/{id}" 

는 경로에 대한 기본 값이 있습니다,하지만 당신은 A/B/C하는 URL이있는 경우, 그것은 컨트롤러 aController에 대한 조치 A의 모양과 방법에 말했다 경우 매개 변수로 c를 전달할 컨트롤러는 매개 변수를 받아들입니다.

그런 다음 몇 가지 사항을 명확히해야합니다. 다시 컨벤션 오버 컨셉 : 1) 기본 엔진을 사용하는 경우 모든 컨트롤러 클래스는 컨트롤러로 끝나야합니다. 그런 식으로 요청이 들어오고 {controller} 값이 파싱되면 엔진은 Controller를 Controller에 추가하고 Controller 폴더 (따라서 네임 스페이스)를 찾아서 클래스를 찾습니다. 2) 기본적으로 변경 될 수 있습니다. 컨트롤러의 모든보기는 Views/{controller} 폴더 또는 Views/Shared 폴더에 있어야합니다. 3) 컨트롤러의 공용 메서드는 기본적으로 동작입니다. 이 속성을 숨겨서 엔진에서 사용할 수 없게 만들 수 있지만 기본적으로 공개됩니다.

요청이 들어 오면 경로가 알려진 모든 경로 (global.asax)와 비교되고 요청과 일치하는 첫 번째 경로가 허용됩니다.경로는 구성 요소 파트로 파싱되어 컨트롤러, 동작 및 매개 변수를 결정합니다.

컨트롤러가 식별되면 엔진은 해당 컨트롤러의 인스턴스를 인스턴스화하고 발견 된 일치하는 메서드 (동작)를 실행합니다.

작업은 ActionResult를 반환합니다. 뷰는 실제로 ViewResult를 반환하는 extensino 메서드입니다 (올바르게 기억하는 경우). 조치의 기본보기는 Views/{ControllerName} 폴더에있는 조치와 동일한 이름의보기입니다.

라우팅은 그 자체로 짐승이며, 만약 당신이 그걸 가지고 놀려고한다면, 나는 그것에 대해 좋은 읽을 거리를 추천 할 것입니다. 이해하는 시간이지만 일생을 지배하는 일.

필자에게 BTW에는 컨트롤러 작업을위한보기로 PHP 페이지를 사용할 엔진이 없습니다.