저는 ASP.NET MVC에서 새로 만들었습니다.이 'AdminController'와 같은 컨트롤러를 만들지 만 Admin의 이름으로 만 호출하십시오. ASP.NET MVC에서 컨트롤러를 호출 할 때 성명을 사용하지 않아도되는 방법은 무엇입니까?통화 컨트롤러에 성명이 없습니다.
0
A
답변
1
URL에 지정한 컨트롤러 이름은 컨트롤러 이름과 같지 않습니다. 액션 이름은 컨트롤러의 실제 메소드와 동일하지 않습니다. 컨트롤러/액션과 MVC가 수행해야하는 코드를 결정할 때 수행하는 클래스/메소드 사이에는 내부 매핑이 있습니다.
일반 매핑 규칙은 다음과 같습니다
컨트롤러- 는 컨트롤러 이름 (
Admin
)를 타고 여기에 접미사Controller
을 추가하고이 이름 (AdminController
)와 클래스를 검색합니다. - 작업의 경우 작업 이름 (
Details
)을 가져 와서 컨트롤러에서 동일한 이름 (ActionResult Details() {}
)의 메서드를 검색하십시오.
그러나 현재 MVC는 ActionName
속성을 통해 다른 이름의 메소드에 대한 작업의 명시 적 매핑을 지원합니다. 따라서 예를 들어 ActionResult EditUser() {}
메서드에 매핑 된 Edit
이라는 작업을 수행 할 수 있습니다.
MVC의 향후 버전에서도 특정 컨트롤러 이름을 특정 클래스에 명시 적으로 매핑 할 수있는 유사한 ControllerName
특성을 추가 할 수 있습니다. (사실, 서로 다른 영역에서 동일한 컨트롤러 이름을 서로 다른 구현으로 제공하여 문제를 해결하는 데 도움이되기를 바랍니다)
1
이것은 Routes를 사용하여 Asp.Net MVC 프레임 워크에서 처리합니다. Global.aspx.cs에서 경로를 정의합니다. 경로는 호출 할 컨트롤러와 주어진 URL에 대해 수행 할 작업을 정의합니다.
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new {controller = "Home", action = "Index", id = ""}
);
Asp.net MVC는 컨벤션 오버 규칙을 선호합니다. 그래서 컨벤션 '홈'은 HomeController를 의미합니다.