2011-07-27 15 views
9

.html dosyaları ASP.NET MVC projemdeki diğer .cshtml görünümlerin yanında görünümler olarak sunmak istiyorum. Bunun başlıca sebebi, html dosyalarının diğer görüşlerin uydukları eylemlerimde aynı özel güvenlik kurallarına tabi olmasıdır.ASP.NET MVC'deki görünümler olarak .html dosyaları oluşturma.

.cshtml veya .aspx uzantılarını kullanmak istemiyorum çünkü bu nedenle, dosyalar derlenecek hiçbir şeyleri olmadığından, bu oldukça büyük dosyaları derlemeye çalışıyor.

.html uzantılarını aramak için görünüm motorunu güncelledim. Bu iyi çalışıyor, ancak sonra aldığım hata kayıtlı bir yapım sağlayıcım yok. Web.config dosyasında .html dosyaları için bir oluşturucu sağlamayı denedim, ancak bu hatada bir fark yaratmıyor.

Metni .html dosyasından derlemeyi denemeden doğrudan iletecek bir oluşturma sağlayıcısı var mı?

Aradığım şey, .html dosyalarının görünümler dizininde yaşamalarını sağlamaktır, böylece bunlar yalnızca bir eylemle istendiğinde oluşturulur ve .html görünümleri herhangi bir derleme yoluyla çalıştırılmamalıdır.

sayesinde

Chris

+1

Bir kez derlenmiş ve daha sonra önbelleğe alınmayan görünümler değil misiniz? Hızlar için düz HTML içeren IMHO gerçek bir mikro optimizasyon. – jfar

cevap

14

ben bir çözüm buldum. Benim eylemimde FilePathResult döndürür ve sadece dosyayı yükler ve herhangi bir derleme olmadan iletir.

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

Veya, daha da özlü olmak istiyorsanız ve bir "Denetleyicinin" içinde olursanız: 'Dönüş Dosyası (" path_and_file.html "," text/html ");' –

+1

düzeni nasıl oluşturabilirim? – Deka

3

Eylem yöntemlerinden biri için bunu yapmak istiyorsanız @ Chris/@Marius harika. onlar verildiği gibi:

İşte
<!-- web.config under the Views folder --> 

<system.webserver> 
<handlers> 

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

şudur: Görüntüleme Klasör saf html görüşlerini dönmek için web config bunu yapmak istiyorsanız

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

Ben sorunun bir daha çözüm eklemek istiyorum bunu öneren bir post.

+0

Teşekkürler bu benim için çalıştı!^-^ –

+0

Teşekkürler, daha iyi 'Return File ("path_and_file.html", "text/html");' çizgi .net çekirdeği ile çalışır – MIP1983

İlgili konular