2011-03-10 6 views
38

मुझे रेजर सिंटैक्स पसंद है जो माइक्रोसॉफ्ट ने अपने वेबमैट्रिक्स उत्पाद (http://en.wikipedia.org/wiki/Microsoft_WebMatrix) में इनलाइन कोडिंग के लिए विकसित किया है।क्या हम एएसपी.नेट वेबफॉर्म (* .aspx पृष्ठों) में रेजर सिंटैक्स का उपयोग कर सकते हैं?

अब विजुअल स्टूडियो एसपी 1 में RTM'd है, क्या यह संभव है (और/या योजनाबद्ध) एएसपी.NET वेबफॉर्म में रेजर सिंटैक्स के उपयोग को सक्षम करने के लिए?

धन्यवाद!

उत्तर

44

हम (एएसपी.नेट टीम) वर्तमान में रेजर सिंटैक्स का उपयोग कर वेबफॉर्म पेज मॉडल का समर्थन करने की कोई योजना नहीं है। इसके अलावा यह असंभव है कि हम कभी भी इस पर गंभीरता से विचार करेंगे क्योंकि दोनों काम एक साथ काम करने के लिए मॉडल बहुत अलग हैं।

+0

तो इसका क्या अर्थ है ** आप वेब फॉर्म आधारित अनुप्रयोगों के भीतर .cshtml/.vbhtml फ़ाइलों का भी उपयोग करने में सक्षम होंगे। रहो रहें। ** http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx#7553469? – Programista

+0

अभी भी ऐसी कोई योजना नहीं है। आपके पास क्लासिक वेबफॉर्म एप्लिकेशन हो सकता है और इसमें रेजर फ़ाइलें शामिल हो सकती हैं लेकिन उनके पास ' 'जैसे नियंत्रण नहीं हो सकते हैं। – marcind

4

आप Codeplex से उपलब्ध RazorEngine का उपयोग करके इसे एकीकृत कर सकते हैं। यह आपको एमवीसी के बाहर रेज़र को संसाधित करने की अनुमति देता है। हालांकि आपको रेजर के एमवीसी संस्करण से प्राप्त सभी सुविधाएं नहीं मिलती हैं, जैसे कि @Html और @Url और अन्य।

+0

हे, मुझे लगता है। :) बस महसूस किया कि वह पूछ रहा था कि एमवीसी के बाहर रेज़र का उपयोग कैसे करें - लेकिन आपका जवाब अधिक समझ में आता है। – Buildstarted

27

आप एमवीसी के बिना रेजर पेज का उपयोग कर सकते हैं; इसे एएसपी.Net वेबपृष्ठ कहा जाता है।

बस सामान्य एएसपी.Net 4.0 प्रोजेक्ट में .CSHTML फ़ाइलों को जोड़ें।

Iexplained how this works मेरे ब्लॉग में।

+1

निश्चित रूप से, आप .CSHTML या .VBHTML फ़ाइलों को बना सकते हैं, लेकिन सवाल यह है कि क्या रेज़र सिंटैक्स * याएसएक्सएक्स पृष्ठों में उपयोग योग्य (या होगा)। – cpuguru

+0

@cpuguru: बिलकुल नहीं। इससे कोई मतलब नहीं होगा। आप (सामान्य रूप से) एक फ़ाइल में दो प्रतिस्पर्धी भाषाओं का उपयोग नहीं कर सकते हैं। – SLaks

+2

मैंने सोचा था कि रेजर एक वाक्यविन्यास था (एक भाषा नहीं)? – cpuguru

1

मुझे हिम्मत है कि माइक्रोसॉफ्ट ने इसे माना है, लेकिन इस विषय पर कोई आधिकारिक शब्द नहीं है। चूंकि आपके पास एएसपीएक्स फ़ाइल में सी # या वीबी कोड नहीं होना चाहिए, इसलिए आपको वेब फॉर्म में रेजर समर्थन जोड़ने के बिंदु के बारे में आश्चर्यचकित होना होगा। पीछे कोड अभी भी एक (आंशिक) वर्ग फ़ाइल होगी। आप रेज़र को वेब पेज या एमवीसी में कक्षा फ़ाइल में रखने से कहीं ज्यादा नहीं रखेंगे। और सर्वर नियंत्रणों को स्वैप करना और एचटीएमएल हेल्पर्स के लिए सभी अच्छी घोषणात्मक सामग्री वेब फॉर्म रूट, आईएमओ जाने के प्रमुख कारणों में से एक को हटा देती है।

+1

@ someControl.ClientID <% = SomeControl.ClientID% के बजाय> वेबफॉर्म के अंदर रेज़र चाहते हैं के लिए एक अच्छा कारण प्रतीत होता है। – Arshia001

1

यह वास्तव में करना मुश्किल नहीं है। अभी इस पर काम करना CodePlex से RazorEngine पकड़ो। यह आपको रेजर cshtml/vbhtml फ़ाइलों को रनटाइम पर कक्षा में संकलित करने देता है।

तब आप उस कक्षा को ले सकते हैं, और इसे एएसपी.Net सर्वर नियंत्रण से इसकी रेंडर विधि के अंदर उपयोग कर सकते हैं। सर्वर नियंत्रण के शरीर से HTML प्राप्त करने का यह एक शानदार तरीका है। बहुत, ज्यादा क्लीनर।

अब, आप कुछ तरीकों को भी जोड़ सकते हैं जिन्हें आप रेजर से बुला सकते हैं। उदाहरण के लिए, RenderChild की तरह कुछ जोड़ें। इसके अतिरिक्त, आप सर्वर नियंत्रण को खुद को रेजर के लिए उपलब्ध मॉडल के रूप में सेट कर सकते हैं। फिर आप सर्वर नियंत्रण में आक्रमण कर सकते हैं। इसमें से किसी एक के बच्चे के नियंत्रण को पकड़ने और रेंडर का आह्वान करने जैसी कुछ करने सहित।