2012-10-25 3 views
13

ASP.NET MVC 3 프로젝트에서 작업 중입니다. 단순화를 위해 컨트롤러, 모델 및 뷰를 하위 폴더로 나누고 싶습니다. 컨트롤러와 모델로 할 수 있지만 뷰를 만들 때 루트 폴더 Views에 자동으로 생성됩니다.이 문제를 해결할 방법이 있습니까?ASP.NET MVC 3의 하위 폴더에보기 추가

예 : 나뿐만

모델 클래스, 같은

Models/Finance/Bank.cs 
Models/Finance/Finance.cs 
Models/Production/Production.cs 

컨트롤러,

Controllers/Finance/BankController/Create 
Controllers/Finance/BudgetController/Create 
Controllers/Production/ProcessController/Create 

을 만들 수 있지만 내가 위의 작업에 대한 뷰를 만들려고 경우, 그것은에 생성

Views/Bank/Create.aspx 
Views/Budget/Create.aspx 
Views/Process/Create.aspx 

나는 그것이 같아야한다 싶다

Views/Finance/Bank/Create.aspx 
Views/Finance/Budget/Create.aspx 
Views/Prodution/Process/Create.aspx 

컨트롤러 및 모델 용으로 만든 것과 같은 하위 폴더에서보기를 만들 수있는 방법이 있습니까? 감사!

+0

여기에 뭔가가 없습니다. 'CustomerController'는 두 개의 폴더가 필요하지 않습니다. –

답변

17

모델 및 컨트롤러는 컴파일 된 소스 파일입니다. DLL로 컴파일되므로 말 그대로 프로젝트의 아무 곳에 나 배치 할 수 있습니다. 이 클래스는 일단 컴파일되면 파일 시스템에 존재하지 않기 때문에 파일 시스템에서의 위치 개념이 없습니다.

조회수는 다릅니다. 그것들은 서버에 배포되고 런타임에로드되고 파싱되는 텍스트 파일이므로 프레임 워크는 어디서 찾을 수 있는지를 알아야합니다.

도구는 ~ \ Views \ Controller 폴더 (또는 ~ Areas \ AreaName \ Controller 폴더)에 항상보기를 만듭니다. 그 후에 원하는 위치로 이동할 수 있지만 .cshtml을 포함하여 View() 메서드 전체 폴더 경로를 지정해야합니다. 또는 원하는 위치에서 검색 경로를 설정하는 사용자 지정 ViewEngine을 구현해야합니다.

0

View의 이름은 Controller의 이름에 따라 규칙을 따라야합니다.
Views/Admin/Create을 만들고 싶다면 CustomerController.cs의 이름은 AdminController.cs이어야합니다.

+2

이것은 어떻게 하위 컨트롤러로 변환됩니까? 예 : 'Views/Admin/Customers/Create'에'AdminController'와'CustomersController' 서브 컨트롤러가 있습니다. – Dan

21

다음 단계는 Views (루트 폴더)에 원하는

  1. 하위 폴더를 생성, 날 위해 일했습니다. 내 경우에는 Finance & Production이었습니다.

  2. Views에 자동으로 생성 된 폴더를 적절한 하위 폴더로 끌어서 이동하면됩니다.내 경우에는 Bank & Finance에의 BudgetProcess에에 Production

  3. 당신은

    returnView("~/Views/Finance/Bank/Create.aspx")

    returnView("~/Views/Finance/Budget/Create.aspx")

    , 같은 뷰의 전체 경로를 제공, 컨트롤러 액션에서보기를 반환하는 동안

    returnView("~/Views/Production/Process/Create.aspx")

+3

@Mystere Man이 제안한 것입니다. 또 다른 대답을 쓸 이유가 없습니다. 그냥 대답을 –

+1

으로 표시해주세요. 그것은 면도기 cshtml에서도 잘 작동했습니다. 예 : "return View ("~/Views/SomeSubFolder/Login.cshtml "); – granadaCoder