2010-07-29 2 views
2

다른 사람들이이 같은 문제를 겪고 있는지 또는 그것이 나만의 것인지 궁금해합니다! 내가 할 경우 Purchases.aspx렌더링 부모와 같은 이름의 부분 뷰 - 충돌 WebDev.WebServer40.exe

:

것은 내가보기 Purchases.aspx과 부분보기 Purchases.ascx을 감안할 때 Html.RenderPartial("Purchases") 다음 WebDev.WebServer40.exe은 기본적으로 닫힙니다.

RenderPartial은 렌더링 할 내용 (.aspx 또는 .ascx)을 결정할 수 없기 때문에 스택 오버플로가 발생한다고 생각합니다.

이것은 버그입니까, 정의 된 동작입니까 아니면 그냥 저에게 일어나는 것입니까?

답변

7

ViewLocationFormats 및 PartialViewLocationFormats가 다음과 같이 정의되고 aspx 페이지가 처음 검토되므로 정의 된 동작입니다.

ViewLocationFormats = new[] { 
      "~/Views/{1}/{0}.aspx", 
      "~/Views/{1}/{0}.ascx", 
      "~/Views/Shared/{0}.aspx", 
      "~/Views/Shared/{0}.ascx" 
     }; 

PartialViewLocationFormats = ViewLocationFormats; 

PartialViewLocationFormats는 내 의견으로는 aspx 정의를 제외해야합니다. 기본 WebFormViewengine을 재정의하면이 문제를 해결할 수 있습니다. 참고, Application_Start() 방법으로 등록해야합니다.

public class ASPXViewEngine: WebFormViewEngine 
{ 
    public ASPXViewEngine() 
    { 
     base.PartialViewLocationFormats = 
       new string[] 
        { 
         "~/Views/{1}/{0}.ascx", 
         "~/Views/Shared/{0}.ascx" 
        }; 

     base.AreaPartialViewLocationFormats = 
       new string[] 
        { 
         "~/Areas/{2}/Views/{1}/{0}.ascx", 
         "~/Areas/{2}/Views/Shared/{0}.ascx", 
        }; 
    } 
} 
+0

감사합니다. 매우 유용합니다. –