13

Tôi đang cố gắng sử dụng "gói và rút gọn" mới của MVC4.Đóng gói/rút gọn MVC4 với các nhận xét có điều kiện của IE

Đối với nhận xét có điều kiện của IE, tôi vẫn đang thực hiện theo cách cũ: <!--[if lt IE 9]><link href=.../><![endif]--> hoặc <!--[if lt IE 9]>@Styles.Render("~/foo")<![endif]--> nhưng dường như tôi không nhận được xử lý gỡ lỗi/giải phóng tự động.

Có cách tích hợp để thực hiện việc này không? Những người khác làm điều này như thế nào?

CHỈNH SỬA:
Cũng sẽ tuyệt vời khi có thể bao gồm các thẻ <noscript> bên trong đầu ra được hiển thị (được sử dụng cho dự phòng).

Trả lời

15

Cho đến khi tôi tìm thấy một cách tốt hơn, tôi đã thực hiện một lớp bộ chuyển đổi gọi Bundles, trong đó có phương pháp:

public static IHtmlString RenderStylesIe(string ie, params string[] paths) { 
    var tag = string.Format("<!--[if {0}]>{1}<![endif]-->", ie, Styles.Render(paths)); 
    return new MvcHtmlString(tag); 
} 

Có một phương pháp tương tự cho các kịch bản. Chế độ xem gọi chúng là như vậy:

@Bundles.RenderStylesIe("lt IE 9", "~/Content/foo") 
@Bundles.RenderScriptsIe("lte IE 7", "~/Scripts/bar") 

Nếu có cách nào tốt hơn, tôi sẽ đánh giá cao lời khuyên.

+0

Nhược điểm của phương pháp này, là nếu tôi có một loạt các kiểu hoặc kịch bản cần "nếu lt IE 9" và "nếu lte IE 7" thì chúng phải được đưa vào các gói riêng biệt và được hiển thị riêng . –

+0

Cũng không chắc chắn về cách thanh lịch để nướng trong thẻ '

+0

Tôi thấy giải pháp này khá thanh lịch –

5

Bản cập nhật 1.1-alpha1 sắp phát hành sẽ có hỗ trợ thực hiện định dạng thẻ của riêng bạn với trình trợ giúp Tập lệnh/Kiểu.

Có một tài sản DefaultTagFormat mới đó là bởi thiết lập mặc định để:

"<script src="{0}"></script>"

Ngoài ra còn có một phương pháp RenderFormat mà mất trong các định dạng thẻ là tốt. Bạn sẽ có thể kiểm soát việc hiển thị nhiều hơn một chút với những điều này. Là những gì bạn đang cố gắng để làm có thể với trong một chuỗi định dạng?

+0

Không chắc chắn nếu không nhìn thấy mẫu/chữ ký, nhưng không chắc liệu nó có thể hoạt động với các thay đổi mới của bạn hay không, vì các chú thích có điều kiện được đặt bên ngoài thẻ tập lệnh/kiểu. Cách tôi mô tả trong câu trả lời của tôi không phải là lý tưởng, nhưng nó hoạt động độc đáo. –

+0

Ngoài ra, và đây chỉ là sở thích cá nhân !, Tôi thích khả năng sử dụng lớp của tôi để gọi 'Gói' thay vì' Kiểu 'và' Tập lệnh'. Nó chứa đựng nhiều hơn. Các phương pháp mới bạn đã mô tả âm thanh rất hữu ích mặc dù. –

+2

Về cơ bản, định dạng sẽ là định dạng chúng tôi sử dụng để tạo các thẻ liên kết/tập lệnh riêng lẻ. Vì vậy, bạn có thể làm một cái gì đó như: Scripts.RenderFormat (" {0} ", đường dẫn) –

-2

Một thay thế tôi thấy được ở đây: https://coderwall.com/p/5zqvkg

Đó là một vấn đề sở thích

(Vẫn yêu mã trên - đó là sạch hơn nhiều và đọc dễ dàng hơn

@Bundles.RenderStylesIe("lt IE 9", "~/Content/foo") 
@Bundles.RenderScriptsIe("lte IE 7", "~/Scripts/bar") 

)

+0

Liên kết ở trên đăng một giải pháp không hoạt động trong thực tế – WebDever

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