2011-04-11 3 views
0

다음과 같은 문제가 있습니다. 내 솔루션에는 2 개의 컨트롤러가 있습니다 : 홈 및 계정. 모든 것이 지금까지 작동합니다. 하지만 HomeController 위의 [권한 부여]를 추가 할 때 예를 들어ASP.NET MVC 3 부분보기를 찾을 수 없습니다.

[Authorize] 
public class HomeController : Controller 
{ 
... 

나는

System.InvalidOperationException: The partial view 'Repository' was not found or no view engine supports the searched locations. The following locations were searched: 
~/Views/Account/Repository.aspx 
~/Views/Account/Repository.ascx 
~/Views/Shared/Repository.aspx 
~/Views/Shared/Repository.ascx 
~/Views/Account/Repository.cshtml 
~/Views/Account/Repository.vbhtml 
~/Views/Shared/Repository.cshtml 
~/Views/Shared/Repository.vbhtml 

부분보기 리포지터리 (repository) 내부 HomeController입니다 수 있도록, 따라서 그보기 ~이/홈/Repository.cshtml는하지만보기의 /에 Shared 또는 Account 폴더에 seacrhed. 위에서 말했듯이 HomeController 클래스 위에 [Authorize]가 없으면 모든 것이 예상대로 작동합니다.

오류가 발생 코드는

@Html.Partial("Repository") 

감사합니다 도움을 _Layout.cshtml입니다.

답변

9

_Layout.cshtml은 전체 응용 프로그램의 마스터 페이지입니다. 가정 컨트롤러가 인증 된 사용자를 찾고 사용자가 인증되지 않았으며 계정 컨트롤러의 로그인 작업으로 리디렉션되는 것을 확인합니다. 이 작업은 부분보기를 렌더링하고 싶지만 찾을 수없는 _Layout.cshtml 마스터 페이지를 사용하는보기를 렌더링합니다. 계정 페이지에 없기 때문입니다.

간단한 답변 : 마스터 페이지의 부분보기는 ~/Views/Shared 디렉토리에 있어야합니다. 또는 부분 콜을 홈 컨트롤러 컨텍스트에서만 실행되는 페이지로 이동하십시오.

+0

좋아, 지금 감사합니다. – user433947

0

또한 다음을 확인하십시오. 해당 페이지의 출력 유형이 content로 설정되어 있는지 확인하십시오. 이것은 피어, 조 F.에 의해 나에게 지적되었습니다. 어떤 이유로 든 출력이 올바르게 설정되지 않습니다. 따라서 앱을 홍보 할 때 cshtml 파일이 복사되지 않습니다.

0

작업 결과 상단에 [인증]과 같은 속성을 사용하면 특정보기에 관리자 보안 권한이나 기타 권한이 있어야 함을 의미합니다. 이것은 web.config로 가서 자동 화를 설정하여 해결할 수 있습니다. 예를 들면

<location path="Admin/Repository.aspx"> 
    <system.web> 
     <authorization> 
     <allow roles="Administrators,content managers" /> 
     <deny users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
관련 문제