13

मैं एमवीसी 4 के नए "बंडलिंग और कमीशन" का उपयोग करने की कोशिश कर रहा हूं।आईवीसी 4 बंडलिंग/आईई सशर्त टिप्पणियों के साथ खनन

आईई सशर्त टिप्पणियों के लिए, मैं अभी भी इसे पुराना तरीका कर रहा हूं: <!--[if lt IE 9]><link href=.../><![endif]--> या <!--[if lt IE 9]>@Styles.Render("~/foo")<![endif]--> लेकिन मुझे स्वचालित डीबग/रिलीज हैंडलिंग नहीं मिल रहा है।

क्या ऐसा करने का एक अंतर्निहित तरीका है? दूसरों को यह कैसे कर रहे हैं?

संपादित करें:
इसके अलावा प्रस्तुत किए गए आउटपुट (फॉलबैक के लिए उपयोग किए गए) के अंदर <noscript> टैग शामिल करने में सक्षम होना बहुत अच्छा होगा।

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); 
} 

लिपियों के लिए एक समान विधि है:

उत्तर

15

जब तक मैं एक बेहतर तरीका मिल जाए, मैं Bundles कहा जाता है एक एडाप्टर वर्ग है, जो विधि है बनाया है। एक दृश्य उन्हें इस तरह कहते हैं:

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

यदि कोई बेहतर तरीका है, तो मैं सलाह की सराहना करता हूं।

+0

इस दृष्टिकोण पर दोष, अगर मेरे पास शैलियों या स्क्रिप्ट्स का एक गुच्छा है, जिन्हें "यदि लेफ्टिनेंट आईई 9" और "अगर एलईटी आईई 7" की आवश्यकता है तो इन्हें अलग-अलग बंडलों में रखा जाना चाहिए, और अलग से प्रस्तुत किया जाना चाहिए । –

+0

'

+0

मुझे यह समाधान काफी सुरुचिपूर्ण मिला –

5

जल्द ही रिलीज़ होने के लिए 1.1-अल्फा 1 अपडेट स्क्रिप्ट/स्टाइल हेल्पर्स के साथ अपना टैग स्वरूपण करने का समर्थन करेगा।

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

वहाँ भी एक RenderFormat तरीका है जिसके साथ ही टैग प्रारूप में ले जाता है:

एक नया DefaultTagFormat संपत्ति जो करने के लिए डिफ़ॉल्ट सेट कर रहा है नहीं है। आप इनके साथ प्रतिपादन को थोड़ा और नियंत्रित करने में सक्षम होना चाहिए। क्या आप एक प्रारूप स्ट्रिंग में संभव करने की कोशिश कर रहे हैं?

+0

नमूना/हस्ताक्षर देखने के बिना सुनिश्चित नहीं है, लेकिन यह सुनिश्चित नहीं है कि यह आपके नए परिवर्तनों के साथ काम कर सकता है, क्योंकि सशर्त टिप्पणियां स्क्रिप्ट/स्टाइल टैग के बाहर रखी गई हैं। जिस तरह से मैंने अपने उत्तर में वर्णित किया वह आदर्श नहीं है, लेकिन यह अच्छी तरह से काम करता है। –

+0

इसके अलावा, और यह केवल व्यक्तिगत वरीयता है !, मुझे 'शैलियों' और 'स्क्रिप्ट्स' की बजाय 'बंडल' को कॉल करने के लिए मेरी कक्षा का उपयोग करने की क्षमता पसंद है। यह अधिक आत्म निहित है। आपके द्वारा वर्णित नए तरीकों को ध्वनि बहुत उपयोगी है। –

+2

असल में प्रारूप वह होगा जो हम अलग-अलग स्क्रिप्ट/लिंक टैग उत्पन्न करने के लिए उपयोग करते हैं। तो आप कुछ ऐसा कर सकते हैं: स्क्रिप्ट्स। रेंडरफॉर्मैट (" {0} ", पथ) –

-2

एक वैकल्पिक मैंने पाया यहाँ था: https://coderwall.com/p/5zqvkg

यह प्राथमिकता का मामला है

(फिर भी उपरोक्त कोड प्यार - यह बहुत क्लीनर है और पढ़ता आसान

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

)

+0

उपरोक्त लिंक एक समाधान पोस्ट करता है जो अभ्यास में काम नहीं करता है – WebDever