_viewstart.cshtml 을 사용 하여 동일한 Razor Layout 을 자동으로 뷰에 할당합니다 .
내 Views 폴더의 루트에 다음과 같이 죽은 간단한 파일입니다.
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
이것은 모든 단일 뷰에 @Layout 지시문을 추가하는 것보다 더 건조합니다.
그러나 이것은 Razor 부분 뷰에 문제가 있습니다. Razor 부분 뷰는 _viewstart.cshtml의 내용을 실행하므로 레이아웃을 잘못 할당하여 더 이상 부분적이지 않습니다.
다음은 _viewstart.cshtml 파일, 공유 _layout.shtml 파일 및 부분보기 ( “AnonBar.cshtml”)를 보여주는 가상의 프로젝트입니다.
현재이 문제를 해결하는 방법은 모든 부분보기에 다음 줄을 추가하는 것입니다.
@{
Layout = "";
}
이것은 Razor에서 뷰를 부분적으로 나타내는 잘못된 방법 인 것 같습니다. (웹 양식보기 엔진과 달리 파일 확장자는 부분보기에서 동일합니다.)
내가 고려했지만 그보다 더 나쁜 다른 옵션 :
- 모든 부분 뷰를 공통 폴더에 배치하여 공통 _viewstart.cshtml을 공유 할 수 있습니다. 이로 인해 뷰가 해당 컨트롤러와 동일한 폴더에있게됩니다.
- 부분 뷰를 사용하지 않습니다.
이것이 Razor 뷰 엔진 팀에 의해 여전히 해결되고 있습니까? 아니면 기본 개념이 누락 되었습니까?
답변
당신이 경우 return PartialView()
귀하의 컨트롤러에서 (대신 return View()
), 다음 _viewstart.cshtml
실행되지 않습니다.