MVC3에서 다른 영역에서 동일한 컨트롤러 이름을 사용할 수 있습니까?
MVC3에는 다음 영역이 있습니다.
- 모바일.
- 샌드박스
그런 다음 지도를 다음과 같이 라우팅합니다.
context.MapRoute(
"Sandbox_default",
"Sandbox/{controller}/{action}/{id}",
new { controller = "SandboxHome", action = "Index", id = UrlParameter.Optional }
그리고.
context.MapRoute(
"Mobile_default",
"Mobile/{controller}/{action}/{id}",
new { controller = "MobileHome", action = "Index", id = UrlParameter.Optional }
);
문제는 이것이 다음과 같은 URL을 제공한다는 것입니다.
그리고.
하지만 저는 이렇게 하길 원합니다.
문제는 Sandbox Home-Controller의 이름을 Home으로 변경할 때와 Mobile원하는 URL을 제공하는 Home-Controller to Home은 HomeController에 대한 클래스가 두 개라며 컴파일되지 않습니다.
다른 영역에서 동일한 컨트롤러 이름을 사용하려면 어떻게 해야 합니까?
네.
이 블로그 게시물에서 설명한 대로: http://haacked.com/archive/2010/01/12/ambiguous-controller-names.aspx
Visual Studio에서 생성한 RegisterAllAreas 및 AreaRegistration 파일에 대한 호출이 있다고 가정합니다.충돌을 방지하기 위해 글로벌 ASAX의 기본 경로에 있는 네임스페이스만 사용하면 됩니다.
//Map routes for the main site. This specifies a namespace so that areas can have controllers with the same name
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[]{"MyProject.Web.Controllers"}
);
영역 컨트롤러를 고유한 네임스페이스 내에 유지하는 한.이것은 효과가 있을 거예요.
예, 하지만 라우팅을 변경해야 합니다.
context.MapRoute(
"Default",
"{area}/{controller}/{action}/{id}",
new { area = "Mobile", controller = "Home", action = "Index", id = UrlParameter.Optional }
);
두 경로를 모두 유지할 수 있지만 정의하는 것을 잊지 마십시오.area
당신의 채무 불이행 상태에서.
중요한
물론 컨트롤러를 고유한 영역 네임스페이스에 유지해야 합니다.
namespace MyApp.Areas.Mobile.Controllers
{
public class HomeController : Controller
{
...
}
}
namespace MyApp.Areas.Sandbox.Controllers
{
public class HomeController : Controller
{
...
}
}
MSDN에서 이 링크를 확인하고 진행 상황을 확인합니다.그리고 지역 등록에 대해 이야기하는 MSDN 기사도 잊지 마세요, 왜냐하면 당신은 전화를 해야 할 것이기 때문입니다.RegisterAllAreas()
방법.
그리고 당신은 여전히 원래의 비영역 컨트롤러를 유지하고 싶기 때문에, 당신은 이 Phil Hack의 기사를 읽어야 합니다. (Credit은 먼저 이 블로그 게시물을 가리키는 답변의 @Rob에게 가야 합니다.)
언급URL : https://stackoverflow.com/questions/5065422/is-it-possible-in-mvc3-to-have-the-same-controller-name-in-different-areas
'source' 카테고리의 다른 글
Java 드라이버를 사용하여 MongoDB에 대한 $or 쿼리를 작성하려면 어떻게 해야 합니까? (0) | 2023.05.25 |
---|---|
커밋되지 않은 변경사항이 있는지 프로그래밍 방식으로 확인하려면 어떻게 합니까? (0) | 2023.05.25 |
어느 것이 더 빠릅니까?Val 또는 ByRef 기준? (0) | 2023.05.25 |
날짜별로 Git에서 체크아웃하는 방법은 무엇입니까? (0) | 2023.05.25 |
설치된 npm 패키지의 버전 찾기 (0) | 2023.05.25 |