2009-07-30 2 views
1
routes.MapRoute(
    "Default", // Route name 
    "{controller}/{action}/{id}", // URL with parameters 
    new { controller = "My", action = "MyFolder", id = "" } // Parameter defaults 
); 

위의 코드는 동일한 프로젝트의 MyController에있는 MyFolder 액션에있는보기를 호출하는 데 도움이됩니다.ASP.NET MVC 아키텍처

MyController가 현재 프로젝트에 포함 된 dll 형식의 다른 프로젝트에 있으면 어떻게 될까요? 해당 뷰를 호출하는 방법?

+0

시도해 보셨습니까? MVC가 모든 참조에서 MyController를 검색한다는 것은 제 이해입니다. –

+0

이것을 확인하십시오 : - [SO - asp.net mvc 별도의 프로젝트에 컨트롤러 넣어] (http://stackoverflow.com/questions/401376/asp-net-mvc-put-controllers-into-a-separate-project) 유지 보수성 확장 성 증분 개발 ((예) 버추얼 어스 (Virtual Earth)의 구현 것의 우리가 내 프로젝트에서 매우 유용한있는 alltogether 별도의 DLL의 특정 기능을 가지고 있다고 가정 해 봅시다 : 는 아래의 사항을 고려 마십시오 : –

+0

는 이전부터 계속) ControllerFactory를 사용함으로써 위의 사항에 매우 유익한 Interface-Implementation 디자인을 사용하지 않아도됩니다. – PadmakarKulkarni

답변

1

MyController 컨트롤러 클래스가 다른 프로젝트에 있으면 경로 작성이 실패합니다. 응용 프로그램이 시작될 때 MVC는 실행중인 어셈블리의 모든 클래스를 '컨트롤러'라는 접미사로 반영하기 때문입니다. 해당 컨트롤러 이름을 찾을 수 없으면 응용 프로그램이 시작되지 않습니다.

다른 프로젝트에서 컨트롤러를 액세스/액세스하려고 시도했습니다. 좋은 예는 관리 도구 프로젝트에서 앱의 일부 기능을 분리하려는 경우 일 수 있습니다. 이로 인해 오류가 발생했습니다.

누군가가 이것이 옳지 않다는 것을 알고 있다면, 이 틀림 없음을 알고 있기 때문에 알려 주시기 바랍니다. 그러나 내 모든 관찰과 작업은 두 프로젝트가 동일한 솔루션에 있다고하더라도 결과가 아니라는 결론을 지적합니다.

+0

그 설명에 감사하는 사람들. 나는이 모든 일들을 조사하고 있었고 다른 일을 시도하고있었습니다. 그러나 지금 나는 더 나은 이해를 가지고 있다고 생각합니다. 마지막 주제는 다음과 같습니다. MVC 패턴은 모든 관심사를 분리한다는 사실을 이해 했으므로 모델을 기본 위치에서 분리해야합니다 (필자는 필수는 아님). – PadmakarKulkarni

+0

기본 위치에서 모델을 분리 할 수 ​​있습니다. MVC 사이트와 동일한 프로젝트에 앉아있을 필요는 없습니다. 나는이 경우에 몇 개인 사이트를 가지고있다. 그들이 어디에 있든 상관 없습니다. –

0

Dan이 말한 바는 정확합니다. 다른 프로젝트에서 컨트롤러를 사용하려면 DefaultControllerFactory를 확장해야합니다.

+0

는 그것이, http://stackoverflow.com/questions/401376/asp-net-mvc-put-controllers-into-a-separate-project 가 알려줘 또한 아래 링크로가는 이전 에서 계속 컨트롤러를 ControllerFactory 또는 ASP.NET MVC에서 제공하는 현재 위치의 형태로 분리하는 좋은 디자인이 가장 좋습니다. – PadmakarKulkarni

관련 문제