2011-02-01 8 views
8

मैं अब कुछ समय के लिए टी 4 एमवीसी का उपयोग कर रहा हूं और "आंशिक एचटीएमएल हेल्पर्स को आंशिक रूप से प्रस्तुत करने के लिए" फीचर से प्यार करता हूं, जो डिफॉल्ट रूप से बंद हो जाता है। मैं टी 4 एमवीसी संस्करण 2.6.40 का उपयोग कर रहा हूँ।T4MVC आंशिक रूप से प्रस्तुत करने के लिए स्पष्ट HtmlHelpers के साथ रेजर का समर्थन कब करेगा?

मैंने हाल ही में एमवीसी 3 में अपग्रेड किया और देखा कि रेजर आंशिक के लिए कोई स्पष्ट एचटीएमएल हेल्पर उत्पन्न नहीं हुआ है, इसलिए मैंने टी 4 एमवीसी टेक्स्ट टेम्पलेट के स्रोत कोड को देखा और "गेटपार्टियल" नामक एक विधि पाई जिसमें कोड की एक पंक्ति है:

var parts = GetControllers() 
     .Select(m => m.ViewsFolder) 
     .SelectMany(m => m.Views) 
     .Where(m => m.Value.EndsWith(".ascx")); 

तो यह स्पष्ट है कि रेजर विचार समर्थित नहीं हैं।

मैं यह भी उल्लेख करना चाहूंगा कि टी 4 टेम्पलेट (राइट-क्लिक> रन कस्टम टूल) चलाते समय मुझे एक कंपाइलर चेतावनी मिलती है: "सी # 2.0 और सी # 3.5 कंपाइलर्स अब समर्थित नहीं हैं। टेम्पलेट हमेशा रहेगा निर्दिष्ट के रूप में 'v3.5' के बजाय संस्करण 4 कंपाइलर के साथ संकलित। "

यह लाइन 18 से संबंधित है जहां टेम्पलेट भाषा विशेषता का "सी # v3.5" का मान है। यह एक स्पष्ट संस्करण निर्भरता क्यों है? क्या यह सिर्फ "सी #" नहीं हो सकता है?

एक पोस्ट में दो अलग-अलग प्रश्न पूछने के लिए क्षमा करें।

उत्तर

11

मैंने इसे संबोधित करने के लिए अभी टी 4 एमवीसी 2.6.42 जारी किया है। आप इसे कोडप्लेक्स से या NuGet से प्राप्त कर सकते हैं।

ध्यान दें कि T4MVC द्वारा आंशिक रूप से रेजर फ़ाइल का पता लगाने के लिए, इसका नाम अंडरस्कोर (उदा। _foo.cshtml) से शुरू करने की आवश्यकता है। इस प्रतिबंध के बिना, हम सभी विचारों के लिए सहायक तरीके तैयार करेंगे, जो चीजों को प्रदूषित करेंगे और मूल्य नहीं जोड़ेंगे। ध्यान दें कि _ के साथ आंशिक रेजर दृश्यों को उपसर्ग करना आम तौर पर एमवीसी टीम द्वारा अनुशंसित किया जाता है।

चेतावनी के लिए, यह असंबंधित है और सौम्य है। इससे छुटकारा पाने के लिए, बस भाषा = "सी # v3.5" भाषा = "सी #" में बदलें। मैं आधिकारिक संस्करण में यह परिवर्तन नहीं कर सकता क्योंकि यह 3.5 पर चलने पर इसे तोड़ देगा (और मैं इसके लिए दो अलग-अलग संस्करणों को बनाए रखना नहीं चाहता)।

+1

धन्यवाद डेविड! – Shayne

2

आपके द्वारा प्राप्त संकलक चेतावनी केवल एक चेतावनी है। यह टी 4 एमवीसी को काम करने से नहीं रोक रहा है।

रेजर का समर्थन करने के लिए, आपको टेम्पलेट में उपयुक्त कोड मिला है - बस इसे संशोधित करें।

var parts = GetControllers() 
     .Select(m => m.ViewsFolder) 
     .SelectMany(m => m.Views) 
     .Where(m => m.Value.EndsWith(".ascx") || m.Value.EndsWith(".cshtml") || m.Value.EndsWith(".vbhtml")); 

मैं इसे आज़मा दूंगा।

यह सिर्फ एक टी 4 टेम्पलेट है, जादू नहीं। इसमें सब कुछ सरल सी # कोड है जो विजुअल स्टूडियो पर्यावरण से परियोजना की जानकारी प्राप्त करता है और कुछ काफी सरल सी # कोड उत्पन्न करता है।

+2

धन्यवाद। मुझे पता है कि टी 4 टेम्पलेट्स जादू नहीं हैं। मैं निश्चित रूप से खुद को बदल सकता था। मैं बस अपना समय बर्बाद नहीं करना चाहता था जो अगली बार जब मैं टी 4 एमवीसी अपडेट करता हूं तो ओवरराइट किया जाएगा। मैं इसे डेविड के ध्यान में लाना चाहता था ताकि वह एक फिक्स जारी कर सके ताकि हर कोई लाभ उठा सके। मुझे वास्तव में टी 4 एमवीसी में एक और बग मिला है और मुझे पता है कि इसे ठीक करने के लिए क्या करना है, लेकिन मैं इस परियोजना में योगदानकर्ता बनना चाहता हूं, इसलिए मैंने अभी योगदानकर्ता बनने का अनुरोध किया है। मुझे उम्मीद है कि मैं स्वीकार करूँगा। – Shayne

संबंधित मुद्दे