MVC 응용 프로그램에서 이상한 문제가 발생했습니다. 우리는 RazorViewEngine을 상속하여 뷰 배열에서 커스텀 로직을 용이하게하기 위해 커스텀 뷰 엔진을 생성합니다.사용자 정의 부분보기 경로를 검색 할 때 파일이 없습니다.
우리는 잠재적보기 경로 목록이 있습니다
PartialViewLocationFormats = new[]
{
"~/Views/Partial/Shared/Base/$thing/{0}.$otherthing.cshtml",
"~/Views/Partial/Shared/Base/$thing/{0}.cshtml",
"~/Views/Partial/Shared/Base/{0}.$otherthing.cshtml",
"~/Views/Partial/Shared/Base/{0}.cshtml"
};
그런 다음 우리가 오버라이드을 FileExists 방법, 같은 :
private string ParsePath(ControllerContext controllerContext, string virtualPath)
{
string newPath = virtualPath;
BaseController controller = controllerContext.Controller as BaseController;
if (controller != null)
{
if (controller.Model != null)
{
if (!string.IsNullOrEmpty(controller.Model.Thing))
{
newPath = newPath.Replace("$thing", controller.Model.Thing);
}
if (!string.IsNullOrEmpty(controller.Model.OtherThing))
{
newPath = newPath.Replace("$otherthing", controller.Model.OtherThing);
}
}
}
return newPath;
}
이 작품 : ParsePath 방법처럼 보인다
protected override bool FileExists(ControllerContext controllerContext, string virtualPath)
{
return base.FileExists(controllerContext, this.ParsePath(controllerContext, virtualPath));
}
로컬로 괜찮지 만, 승 2010, IIS8 상자에 게시 후 다음과 같은 오류가 나타납니다.
'/Views/Partial/Shared/Base/Footer.blar.cshtml'파일이 존재하지 않습니다.
TargetSite: System.Web.Compilation.BuildResult GetVPathBuildResultInternal(System.Web.VirtualPath, Boolean, Boolean, Boolean, Boolean, Boolean)
StackTrace: at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate) yadda yadda yadda
'/Views/Partial/Shared/Base/Footer.cshtml은'왜 예외를 던져 않는 존재 하는가? ... 나는 사이트 등 통합 모드 실행되고 있는지 확인했습니다
어떤 아이디어 -
내 직감 코드가 괜찮 및 IIS와 자사의 문제가 무엇입니까?