2011-07-27 6 views
9

.html 파일을 ASP.NET MVC 프로젝트의 다른 .cshtml보기와 함께보기로 사용하고 싶습니다. 이 주된 이유는 html 파일이 다른보기가 준수하는 내 사용자 정의 보안 규칙의 영향을 받기 때문입니다..html 파일을 ASP.NET MVC보기로 렌더링

.cshtml 또는 .aspx 확장명을 사용하지 않으려는 이유는 프레임 워크가 파일을 컴파일 할 필요가 없으므로 상당히 큰 파일을 컴파일하려고하기 때문입니다.

.html 확장자를 찾기 위해 뷰 엔진을 업데이트했습니다. 이 잘 작동하지만 다음 내가 얻는 오류 등록 된 빌드 공급자가없는 것입니다. web.config에서 .html 파일의 빌드 공급자를 등록하려고 시도했지만 오류가 발생하지 않습니다.

.html 파일의 텍스트를 컴파일하지 않고 바로 전달하는 빌드 공급자가 있습니까?

그래서 내가 뭘 찾고 있습니다 .html 파일을보기 디렉토리에 살기 위해서 그들은 행동을 통해 요청했을 때 렌더링되며 .html보기는 컴파일을 통해 실행되지 않아야합니다.

감사합니다,

크리스

+1

보기를 한 번 컴파일 한 다음 다른 곳에서 캐시하지 않습니까? IMHO는 속도를 위해 일반 HTML을 사용하는 것이 실제 마이크로 최적화입니다. – jfar

답변

14

나는 해결책을 발견했다. 내 작업에서 FilePathResult를 반환하고 파일을로드하고 컴파일하지 않고 통과시킵니다.

return new FilePathResult("path_and_file.html", "text/html"); 
+0

또는, 좀 더 간결하게하기 위해서'Controller' 내부에'return file ("path_and_file.html", "text/html"); ' –

+1

어떻게 레이아웃 내에서 렌더링 할 수 있습니까? – Deka

3

@ Chris/@Marius의 액션 방법 중 하나를 수행하고 싶다면 멋진 게임입니다. 는 그들은 주어진 :

여기
<!-- web.config under the Views folder --> 

<system.webserver> 
<handlers> 

<add name="HtmlScriptHandler" path="*.html" verb="*" precondition="integratedMode" 
    type="System.Web.StaticFileHandler" /> 
</handlers> 
</system.webserver> 

입니다 : 당신이보기 폴더에서 순수 HTML 뷰를 반환하는 웹 설정에서이를 수행하려는 경우

return new FilePathResult("path_and_file.html", "text/html"); 
//or better use 
return File("path_and_file.html", "text/html"); 

내가 문제 하나 더 솔루션을 추가하고 싶습니다 a post입니다.

+0

저에게 도움이 된 덕분에!^-^ –

+0

감사합니다. 더 나은 'return file ("path_and_file.html", "text/html"); 라인은 .net 코어에서 작동합니다. – MIP1983