그래서 나는 Global.asax
의 모든 분야를 등록 :내 지역에서 FindPartialView 검색을 수행하려면 어떻게해야합니까?
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
//...
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
하지만 내 /Areas/Log/Controllers
에, 내가 찾으려고 할 때 PartialView
:
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, "_LogInfo");
실패, viewResult.SearchedLocations
은 다음과 같습니다
"~/Views/Log/_LogInfo.aspx"
"~/Views/Log/_LogInfo.ascx"
"~/Views/Shared/_LogInfo.aspx"
"~/Views/Shared/_LogInfo.ascx"
"~/Views/Log/_LogInfo.cshtml"
"~/Views/Log/_LogInfo.vbhtml"
"~/Views/Shared/_LogInfo.cshtml"
"~/Views/Shared/_LogInfo.vbhtml"
따라서 viewResult.View
은 null
입니다.
내 지역에서 FindPartialView
검색을 만들려면 어떻게해야합니까?
업데이트 : 이 내가 Global.asax
에 등록 된 내 사용자 정의보기 엔진입니다 :
public class MyCustomViewEngine : RazorViewEngine
{
public MyCustomViewEngine() : base()
{
AreaPartialViewLocationFormats = new[]
{
"~/Areas/{2}/Views/{1}/{0}.cshtml",
"~/Areas/{2}/Views/Shared/{0}.cshtml"
};
PartialViewLocationFormats = new[]
{
"~/Views/{1}/{0}.cshtml",
"~/Views/Shared/{0}.cshtml"
};
// and the others...
}
}
그러나 FindPartialView
는 AreaPArtialViewLocationFormats
사용하지 않는 : 나는 정확히했다
"~/Views/Log/_LogInfo.cshtml"
"~/Views/Shared/_LogInfo.cshtml"
감사합니다. 더 자세히 설명해 주시겠습니까?필자는 현재 사용자 정의 뷰 엔진을 보유하고 있으며 위치를 설정했지만 (내 업데이트 참조) FindPartialView는이를 사용하지 않습니다. 어떤 pointes? –
일반 MVC 위치 (예 : 루트보기)에서 Area 폴더의 부분 뷰를 찾으려는 경우 경로 (~/Areas/{2}/Views/{1}/{ 0} .cshtml)을 PartialViewLocationFormats 배열에 추가하십시오. – gdp
경로를 표시하지만 viewresult return이 null 인 (~/Areas/{2}/Views/{1}/{0} .cshtml)을 시도하고 있습니다. – user2156088