2011-07-27 15 views
9

Chciałbym, aby pliki .html służyły jako widoki obok innych widoków .cshtml w moim projekcie ASP.NET MVC. Głównym powodem jest to, że pliki html podlegają tym samym niestandardowym regułom bezpieczeństwa w moich działaniach, które przestrzegają inne widoki.Renderowanie plików .html jako widoków w ASP.NET MVC

Nie chcę używać rozszerzeń .cshtml lub .aspx, ponieważ wtedy struktura próbuje skompilować te raczej duże pliki, które są odpadami, ponieważ pliki nie mają nic do skompilowania.

Zaktualizowałem mechanizm wyświetlania, aby wyszukać rozszerzenia .html. Działa to dobrze, ale wtedy otrzymuję błąd, że nie mam zarejestrowanego dostawcy kompilacji. Próbowałem zarejestrować dostawcę kompilacji dla plików .html w pliku web.config, ale to nie robi żadnej różnicy w błędzie.

Czy istnieje dostawca kompilacji, który po prostu przekazuje tekst z pliku .html bez próby jego kompilacji?

Tak więc szukam plików .html do życia w katalogu views, więc są renderowane tylko wtedy, gdy zażąda tego akcja, a widoki .html nie powinny być uruchamiane przez żadną kompilację.

Dzięki,

Chris

+1

Czy widoki nie są raz kompilowane, a następnie przechowywane w pamięci podręcznej? IMHO mający zwykły HTML dla szybkości, to prawdziwa mikrooptymalizacja. – jfar

Odpowiedz

14

znalazłem rozwiązanie. W mojej akcji zwracam FilePathResult i po prostu ładuję plik i przekazuję go bez żadnej kompilacji.

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

Lub, jeśli chcesz być jeszcze bardziej zwięzły i znajdujesz się w 'Controller':' return File ("ścieżka_i_pliku.html", "tekst/html"); ' –

+1

jak mogę renderować go w układzie? – Deka

3

Jeśli chcesz to zrobić dla jednego swojego sposobu działania @ Chris/@Marius są niesamowite. jak to podane:

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

chciałbym dodać jeszcze jedno rozwiązanie tego problemu, jeśli chcesz to zrobić w sieci web config powrót czystych widoki HTML z widoków folderów:

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

<system.webserver> 
<handlers> 

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

Oto a sugeruje to post.

+0

Dzięki, że zadziałało dla mnie!^-^ –

+0

Dzięki, tym lepiej "zwróć plik (" ścieżka_i_pliku.html "," tekst/html "); ' linia działa z rdzeniem .net – MIP1983

Powiązane problemy