디렉터리 이름 지정 및 파일 명명보기는 ASP.NET MVC 프레임 워크에서 특정 가정을하기 때문에 중요합니다. 이러한 가정을 준수하지 않으면 프레임 워크에서 수행중인 작업을 알 수 있도록 코드를 작성해야합니다. 일반적으로 말해서, 당신은 좋은 가정을하지 않는 한 이러한 가정에 따라야합니다. 가장 간단한 컨트롤러 액션에서
살펴 보자 :
public ActionResult NotAuthorized()
{
return View();
}
더보기 이름) (보기의 호출로 지정되지 않았기 때문에, 프레임 워크는 뷰 파일 이름이 동작과 동일하다고 가정한다 이름. 프레임 워크에는 ViewEngine이라는 유형이있어 확장을 제공합니다. 기본 ViewEngine은 WebFormViewEngine입니다. WebFormViewEngine은 해당 이름을 사용하고 .aspx를 추가합니다. 이 경우 전체 파일 이름은 NotAuthorized.aspx입니다.
그러나 어떤 폴더에 파일이 있습니까? 다시, ViewEngine은 그 정보를 제공합니다. WebFormViewEngine, 그것은 두 개의 폴더에서 찾게됩니다 : ~/조회/공유하고 ~/조회/{컨트롤러} 컨트롤러가 AccountController 호출 된 경우에 따라서
, 그것은 ~/뷰에 보일 것이다/계정
그러나이 이 규칙을 따르고 싶지 않을 때가있을 것입니다. 예를 들어, 두 개의 다른 동작이 동일한 뷰를 반환 할 수 있습니다 (다른 모델 또는 무언가 포함). 이 경우, 당신은 당신의 행동에 명시 적으로 뷰 이름을 지정하는 경우 : WebFormViewEngine과 함께 "보기 이름은"일반적으로 파일 이름, 적은 확장과 동일하지만 프레임 워크가 필요하지 않습니다
public ActionResult NotAuthorized()
{
return View("Foo");
}
주 다른 뷰 엔진의 그것.
마찬가지로 응용 프로그램에서보기 및 기본이 아닌 폴더를 찾는 이유가있을 수도 있습니다. 자신 만의 ViewEngine을 만들면됩니다. 나는 기술을 this blog post에 보여 주지만 이전 버전의 프레임 워크 용으로 작성되었으므로 형식 이름이 다릅니다. 그러나 기본 아이디어는 여전히 동일합니다.
보기 내의 폴더에 하위 폴더가있을 수 있습니까? 그렇다면 컨트롤러가 어떻게 도달합니까? 예를 들어 ... Admin/Profile/Edit/1 –
이렇게하려면 자신 만의 ViewEngine을 작성해야합니다. WebFormViewEngine은 해당 항목을 찾지 않습니다. –
@Eric Web Form 뷰 엔진 인스턴스의'ViewLocationFormats' 설정은 뷰를 하위 폴더에 넣는 데 필요한 모든 것입니다. – bzlm