2010-02-01 4 views
0

findview 메서드의 사용자 지정 뷰 엔진에서 페이지에 정의 된 마스터 페이지가 있어도 mastername은 항상 비어 있습니다. 왜 그런지, 또는 어떻게 mastername을 얻을 수 있습니까? viewEngine 클래스에서 ASP.NET MVC 마스터 페이지

:

MasterLocationFormats = new[] { 
    "~/{0}.master", 
    "~/Shared/{0}.master", 
    "~/Views/{1}/{0}.master", 
    "~/Views/Shared/{0}.master" 
}; 

public override ViewEngineResult FindView(ControllerContext controllerContext, string viewName, string masterName, bool useCache) { } 

페이지에서 :

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Empty.Master" Inherits="System.Web.Mvc.ViewPage" %> 

마스터 파일이 존재합니다.

감사합니다.

+0

자세한 정보를 제공해주십시오. –

답변

0

아마도 마스터 페이지가 표준 위치에 있지 않습니까? 사용자 정의 뷰 엔진 코드를 게시 할 수 있습니까?

0

Debra, View를 반환하는 작업 메서드가 구체적으로 MasterPage 이름을 언급하면 ​​(예 : View ("viewName", "masterName")을 반환) FindView는 MasterLocationFormats 배열에 지정된 위치에서이를 찾으려고 시도하고 할당 그것은 뷰의 마스터 페이지입니다. 이 마스터 페이지는 페이지 지시어에 지정된 마스터 페이지를 덮어 씁니다.

반면에, masterpage가 동작 메소드에 의해 지정되어 있지 않으면, FindView는 그것에 대해 알지 못하기 때문에 그것을 찾지 않을 것입니다. ViewEngine이 페이지 지시어에서 마스터 페이지 이름을 가져 와서 나머지 페이지와 함께 렌더링하는 것은 페이지를 렌더링 할 때만입니다.

희망이 있습니다.

관련 문제