2011-07-27 39 views
9

Tôi muốn có tệp .html đóng vai trò là lượt xem cùng với các chế độ xem .cshtml khác trong dự án ASP.NET MVC của tôi. Lý do chính cho việc này là để các tệp html tuân theo các quy tắc bảo mật tùy chỉnh tương tự trong hành động của tôi mà các chế độ xem khác tuân theo.Hiển thị tệp .html dưới dạng chế độ xem trong ASP.NET MVC

Tôi không muốn sử dụng phần mở rộng .cshtml hoặc .aspx vì sau đó khung cố gắng biên dịch các tệp khá lớn này là lãng phí vì tệp không có bất kỳ thứ gì để biên dịch.

Tôi đã cập nhật công cụ xem để tìm kiếm các tiện ích mở rộng .html. Điều này làm việc tốt, nhưng sau đó các lỗi tôi nhận được là tôi không có một nhà cung cấp xây dựng đăng ký. Tôi đã cố gắng đăng ký một nhà cung cấp xây dựng cho các tập tin .html trong web.config, nhưng điều đó không làm cho bất kỳ sự khác biệt trong lỗi.

Có nhà cung cấp xây dựng nào chỉ chuyển văn bản từ tệp .html thẳng qua mà không cố gắng biên dịch văn bản đó không?

Vì vậy, những gì tôi đang tìm kiếm là tệp .html để sống trong thư mục lượt xem để chúng chỉ hiển thị khi được yêu cầu thông qua hành động và chế độ xem .html không được chạy qua bất kỳ trình biên dịch nào.

Cảm ơn,

Chris

+1

Không phải lượt xem được biên dịch một lần và sau đó được lưu vào bộ nhớ cache ở một nơi nào đó? IMHO có HTML đơn giản cho tốc độ vì lợi ích là một tối ưu hóa vi mô thực sự. – jfar

Trả lời

14

Tôi tìm thấy một giải pháp. Trong hành động của tôi, tôi trả về FilePathResult và nó chỉ tải tệp và chuyển nó qua mà không cần biên dịch.

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

Hoặc, nếu bạn muốn ngắn gọn hơn và bạn đang ở trong một 'Controller':' return File ("path_and_file.html", "text/html"); ' –

+1

làm thế nào tôi có thể render nó trong layout? – Deka

3

Nếu bạn muốn làm điều đó cho một trong các phương pháp hành động của bạn @ Chris/@Marius thật tuyệt vời. khi họ đưa ra:

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

Tôi muốn thêm một giải pháp nữa cho vấn đề nếu bạn muốn làm điều đó trong cấu hình web để trở lại quan điểm thuần túy html khỏi Chế độ xem thư mục:

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

<system.webserver> 
<handlers> 

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

Đây là a post đề xuất nó.

+0

Cảm ơn đã làm việc cho tôi!^-^ –

+0

Cảm ơn, tệp 'return ("path_and_file.html", "text/html") tốt hơn;' dòng hoạt động với lõi .net – MIP1983

Các vấn đề liên quan