2009-09-23 13 views
6

जो मैं करने की कोशिश कर रहा हूं वह विभिन्न टेम्पलेट्स का उपयोग करके ईमेल सामग्री उत्पन्न करता है।क्या एएसपी.नेट एमवीसी के साथ डेटाबेस से खींचे गए टेम्पलेट से दृश्य प्रस्तुत करना संभव है?

मुझे लगता है कि एएसपी.नेट एमवीसी इसके लिए उपयुक्त हो सकता है। मेरे नियंत्रक को ईमेल के लिए आवश्यक डेटा प्राप्त होगा और यह तय करने के लिए कौन सा दृश्य (टेम्पलेट) तय करेगा। (यह और अधिक है कि सिर्फ एक साधारण मेल-मर्ज, सशर्त ब्लॉक, foreach's, आदि होने की आवश्यकता होगी)

मैं वेब टेम्पलेट्स में फ़ाइलों के बजाय डेटाबेस में इन टेम्पलेट्स को स्टोर करने में सक्षम होना चाहता हूं, इसलिए नए टेम्पलेट्स को वेब एप्लिकेशन से आसानी से जोड़ा जा सकता है।

क्या यह संभव है? मैं वेबफॉर्म व्यू इंजन का उपयोग करने में सक्षम होना पसंद करूंगा, लेकिन यदि संभव नहीं है तो अन्य दृश्य इंजनों पर विचार किया जाएगा। मैं आदर्श रूप से टाइप किए गए विचारों का उपयोग करना चाहता हूं।

+1

डेटाबेस में टेम्पलेट्स संग्रह करना आसान हिस्सा है। एक कंट्रोलर एक्शन के अंदर एक स्ट्रिंग में दृढ़ता से टाइप किए गए एएसपी.नेट एमवीसी व्यू पेज को प्रस्तुत करना अधिक चुनौतीपूर्ण हो सकता है। –

+2

मैं उसी उद्देश्य के लिए NVelocity व्यू इंजन (http://nvelocity.codeplex.com/) का उपयोग कर समाप्त कर चुका हूं। –

उत्तर

2

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

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

AFAIR एक ही एप्लिकेशन में कई व्यूइंजिन मिश्रण करना संभव है, ताकि आप अपने सामान्य वेब पृष्ठों के लिए वेबफॉर्म इंजन का उपयोग कर सकें और आपके ईमेल के लिए एक अलग हो सकें।

+0

तो क्या वेबफॉर्म व्यूइंजिन को पहले से ही एप्लिकेशन में संकलित किए जाने वाले विचारों की आवश्यकता है? या यह उन्हें रन टाइम पर संकलित करता है? मुझे जो मिल रहा है वह यह है कि यदि इन आंतरिक वर्गों तक पहुंचने के लिए प्रतिबिंब के माध्यम से संभव हो और रनटाइम पर प्रदान की जाने वाली सामग्री से दृश्य को संकलित किया जा सके।मैंने अभी तक व्यू इंजन के आंतरिक कार्यों को नहीं देखा है। – sectrean

+0

यह रन-टाइम पर विचारों को संकलित करता है। भले ही आप उन्हें रन-टाइम पर संकलित करने के लिए प्रतिबिंब का उपयोग कर सकें, यह छोटा नहीं होगा, क्योंकि इसमें से अधिकतर फाइलों से संकलित करने के लिए कड़ी मेहनत की जा रही है ... हालांकि यह संभव हो सकता है ... –

+0

मैं प्रस्तुत दृश्यों को प्रस्तुत करता हूं वर्चुअल फ़ाइल प्रदाताओं का उपयोग कर डेटाबेस और एक कस्टम दृश्य Razor का उपयोग कर Datalayer से। रेजर स्वतंत्र रूप से चला सकता है लेकिन स्पष्ट रूप से कार्यान्वयन सख्त है। यानी- कोई व्यूबैग नहीं – ppumkin

2

आप वास्तव में एक ही एप्लिकेशन में एकाधिक व्यू इंजन का उपयोग कर सकते हैं। ढांचा प्रत्येक इंजन से पूछेगा कि क्या यह अनुरोधित दृश्य प्रस्तुत करने में सक्षम है। अन्य उपलब्ध दृश्य इंजनों के लिए MvcContrib जांचें ...

जैसा कि पिछले उत्तर में बताया गया है, वेबफॉर्म व्यूइंजिन यह धारणा करता है कि विचार (एएसपीएक्स, एसीएक्स) फाइल सिस्टम पर भौतिक रूप से संग्रहीत हैं, जैसे एएसपी.नेट करता है (हालांकि एएसपी.नेट में आपके पास VirtualPathProvider जैसा कुछ है) - मुझे विश्वास है - मूल रूप से समर्थन के लिए ढांचे में जोड़ा गया है उदाहरण के लिए शेयर बिंदु)।

यदि आप अपना खुद का व्यू इंजन बनाना चाहते हैं, तो आपको IViewEngine को कार्यान्वित करना चाहिए, और व्यू इंजन को व्यूइंजिन संग्रह में जोड़ना चाहिए। Application_Start में।

1

फिल हैक के पास कुछ समान पर great article है।

मुझे लगता है कि यह आपकी आवश्यकताओं के अनुरूप अनुकूलित किया जा सकता है।

दया,

दान

0

आप अपने buildmanager अपने viewengine बना सकते हैं और इसलिए किया है। आपकी व्यूएंगिन बस डीबी से एएसपीएक्स भाग को पुनः प्राप्त कर सकती है और वेबफॉर्म इंजन का आह्वान कर सकती है। आसान नहीं लेकिन काम करने योग्य, यह अधिकतर इस बात पर निर्भर करता है कि आपको इसकी कितनी बुरी आवश्यकता है और यह आपको एक अच्छा आरओआई के साथ कैसे सम्मानित करेगा।

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